[스프링부트] - 컨트롤러와 어노테이션들

2025. 4. 22. 19:27·Spring
728x90
반응형
SMALL

스프링 부트의 동작 흐름은 위 사진과 같다고 보면 된다.


웹 요청 응답 

 

단일 구성           세션(프론트 서버 1대, 백엔드 서버 1대)

클라이언트 (웹 브라우저)

↓ (요청)     ↑ (응답)

백엔드 서버  (WAS, tomcat)

↓ (요청)     ↑ (응답)

데이터베이스 [서버]

 

분산구성           세션 + 레디스(메모리 기반 DB서버)  (JWT 프론트 서버 N대 ,백엔드 서버 N대)

           

클라이언트 (웹 브라우저)

↓ (요청)     ↑ (응답)

프런트엔드 서버 (Web Server, nodejs)

↓ (요청)     ↑ (응답)

백엔드 서버 (Web Application Server, tomcat)

↓ (요청)     ↑ (응답)

데이터베이스 [서버] (MariaDB)

 

프론트엔드 서버(웹 서버)는 HTTP를 요청 받아 정적 컨텐츠를 제공하는 서버이다.

백엔드 서버(웹 애플리케이션 서버)는 DB조회 서버 내 알고리즘, 비즈니스 로직 등 클라이언트 요청에 따라 동적인 컨텐츠를 제공하는 서버이다. 

(뭐 그냥 그렇게 받아들여라...)

 

스프링부트 구성

필터, 서블릿

스프링 시큐리티(보안, JWT), 스프링 + 부트(서블릿)

↓

컨틀롤러(자바 클래스, @Controller)

  ↓

서비스(자바 클래스, @Service)

  ↓

DAO,Repository(자바 클래스, @Repository)

 

이렇게 구성되어 있다.

  • 필터, 서블릿 - 가장 앞단에서 요청을 받음
  • 컨트롤러 - DispatcherServlet으로부터 요청을 전달받음
  • 서비스 - 컨트롤러부터 비즈니스 로직 처리를 위임받음
  • DAO,Repository - 서비스 계증으로부터 데이터 접근 처리를 위임받음

 

 

 

그럼 컨트롤러에 대해서 알아보자

 

package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HomeController {
@RequestMapping("/")
public String home() {
return "home";
}
}

@Controller을 추가해주면 컨트롤러가 된다.

 

@RequestMapping -> /을 request받으면 home()메서드가 실행되어서 home을 리턴한다.

 

그럼 이메서드는 컨트롤러 클래스 안에 있기 때문에 View를 랜더링하겠다는 의도로 해석된다.

뷰는 template파일 탐색하여 home을 찾아서 최종 웹 브라우저에 home.html을 클라이언트에게 반환한다.

<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
<body>
<h1>Home</h1>
</body>
</html>

home.html 파일이다.

그럼 여기서 /을 리퀘스트 받으면 웹 브라우저에 Home을 띄워줘야한다.

home이 잘 띄워지는 것을 볼 수 있다.


스테레오 타입 어노테이션

스테레오 타입 어노테이션은 스프링에서 기본적으로 제공해준다.

@Controller : 요청과 응답을 처리하는 클래스에 사용 

@Service: 비즈니스 로직을 구현한 클래스에 사용

@Repository: Persistence 역할을 하는 클래스에 사용 -> DB와 붙어서 사용하는 어노테이션이라고 생각하면 편함

@Component:  위 3가지 애노테이션의 상위(부모) 객체

 

 

728x90
반응형
LIST

'Spring' 카테고리의 다른 글

[스프링 부트] - AJAX 요청 파라미터 전달  (1) 2025.04.24
[스프링부트] - Web MVC  (1) 2025.04.22
[스프링부트] - DI, IoC 와 Bean  (0) 2025.04.22
[스프링부트] - Maven 개발환경 준비하기 feat. VSCode  (1) 2025.04.22
[SpringBoot/스프링부트] - 서버 템플릿 엔진  (0) 2025.02.19
'Spring' 카테고리의 다른 글
  • [스프링 부트] - AJAX 요청 파라미터 전달
  • [스프링부트] - Web MVC
  • [스프링부트] - DI, IoC 와 Bean
  • [스프링부트] - Maven 개발환경 준비하기 feat. VSCode
코린이 파닥거리기
코린이 파닥거리기
    반응형
    250x250
  • 코린이 파닥거리기
    코린이 파닥거리기의 블로그
    코린이 파닥거리기
  • 전체
    오늘
    어제
    • 분류 전체보기 (116) N
      • 백준[파이썬] (47) N
      • Spring (31)
      • CS (1)
      • 자바 (4)
      • 백준[자바] (20)
      • 프로그래머스 (5)
      • 토이프로젝트 (1)
      • SWEA (2)
      • MSA (4) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    누적합
    JPA
    테스트코드
    스프링
    자바
    db
    spring
    코딩테스트
    파이썬
    스프링부트
    프로그래머스
    Java
    MSA
    JWT
    백준
    SpringBoot
    재귀
    스프링 부트와 AWS로 혼자 구현하는 웹 서비스
    컨테이너
    SWEA
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코린이 파닥거리기
[스프링부트] - 컨트롤러와 어노테이션들
상단으로

티스토리툴바