Spring/Spring 기초 및 세팅

Spring day 4

seungwon-1 2026. 6. 21. 17:42

[Spring 입문 4일차] 핵심 어노테이션 한자리에 정리

들어가며

지금까지 1일차부터 3일차까지 진행하면서 여러 어노테이션이 등장했다. @SpringBootApplication, @RestController, @Service, @Autowired 등이다. 그때그때 필요한 만큼만 설명하고 넘어갔기 때문에, 머릿속에 흩어져 있을 가능성이 크다.

오늘은 그 어노테이션들을 용도별로 묶어 한자리에 정리한다. 각각이 어떤 역할을 하고 어디에 쓰이는지 표로 짚어 두면, 앞으로 코드를 읽을 때 훨씬 수월해진다. 사전처럼 옆에 두고 참고하는 용도로 보면 된다.

1. 애플리케이션 설정 어노테이션

애플리케이션의 시작과 설정에 관여하는 어노테이션이다.

어노테이션 역할

@SpringBootApplication 시작 클래스에 붙이는 어노테이션. Spring Boot 앱의 진입점을 표시한다
@Configuration 설정 정보를 담는 클래스에 붙인다
@Bean 메서드가 반환하는 객체를 Bean으로 직접 등록한다

여기서 짚고 갈 점이 하나 있다. @SpringBootApplication은 사실 여러 어노테이션을 하나로 합쳐 둔 것이다. 그 안에는 다음 세 가지가 포함되어 있다.

  • @Configuration : 이 클래스를 설정 클래스로도 동작하게 한다
  • @ComponentScan : 3일차에서 본 컴포넌트 스캔을 실행한다
  • @EnableAutoConfiguration : Spring Boot가 필요한 설정을 자동으로 구성한다

1일차에 별다른 설정 없이도 서버가 바로 켜졌던 이유가 여기에 있다. 이 한 줄이 스캔과 자동 설정을 한꺼번에 처리해 주기 때문이다.

2. Bean 등록 어노테이션

클래스를 Bean으로 등록할 때 쓰는 어노테이션이다. 3일차에서 다룬 내용을 표로 정리하면 다음과 같다.

어노테이션 쓰이는 계층

@Component 가장 기본이 되는 어노테이션
@Controller 웹 요청을 받아 처리하는 계층
@RestController REST API 요청을 처리하는 계층
@Service 비즈니스 로직을 담는 계층
@Repository 데이터베이스에 접근하는 계층

기능상으로는 모두 Bean으로 등록된다는 점에서 같지만, 역할을 드러내기 위해 구분해서 쓴다.

@RestController도 짚고 넘어갈 만하다. 이것은 @Controller에 @ResponseBody를 더한 형태다. 1일차에서 @RestController를 붙인 메서드가 반환한 문자열이 그대로 화면에 출력됐던 이유가 여기에 있다. 반환값을 화면(View)을 찾는 데 쓰지 않고, 응답 본문에 그대로 담아 보내기 때문이다.

3. 의존성 주입 어노테이션

어노테이션 역할

@Autowired 필요한 Bean을 자동으로 주입한다

2일차에서 다룬 의존성 주입과 직접 연결되는 어노테이션이다. 그런데 그때 작성한 생성자 주입 코드에는 @Autowired가 보이지 않았다. 이유가 있다.

생성자가 하나뿐인 경우, Spring이 알아서 그 생성자로 주입해 주기 때문에 @Autowired를 생략할 수 있다. 그래서 생성자 주입 코드에서는 보통 이 어노테이션을 적지 않는다. 필드 주입이나 setter 주입을 쓸 때는 명시적으로 붙여야 한다.

4. 웹 요청 처리 어노테이션 (미리보기)

다음 5일차에서 본격적으로 다룰 어노테이션들이다. 지금은 이런 것들이 있다는 정도만 가볍게 훑어 두면 된다.

어노테이션 역할

@RequestMapping 특정 주소(URL)와 메서드를 연결한다
@GetMapping GET 요청을 처리한다 (조회)
@PostMapping POST 요청을 처리한다 (등록)
@PutMapping PUT 요청을 처리한다 (수정)
@DeleteMapping DELETE 요청을 처리한다 (삭제)
@RequestParam 요청에 담긴 파라미터 값을 받는다
@PathVariable 주소 경로에 포함된 값을 받는다
@RequestBody 요청 본문의 데이터를 객체로 받는다

1일차에서 사용한 @GetMapping("/hello")가 바로 이 그룹에 속한다. 주소와 메서드를 연결하는 역할이었다는 것을 이제 표 안에서 다시 확인할 수 있다.

정리

정리해 보면, Spring의 어노테이션은 크게 네 묶음으로 나눌 수 있다. 애플리케이션 설정, Bean 등록, 의존성 주입, 그리고 웹 요청 처리다.

이 어노테이션들은 따로 노는 것이 아니라 서로 맞물려 동작한다. 설정 어노테이션이 컴포넌트 스캔을 켜고, 스캔이 Bean 등록 어노테이션이 붙은 클래스를 찾아 등록하며, 등록된 Bean들이 주입 어노테이션을 통해 연결되고, 웹 요청 처리 어노테이션이 실제 요청을 받아 처리한다. 1일차부터 지금까지 배운 내용이 사실은 이 하나의 흐름이었던 셈이다.

다음 5일차부터는 이 중 마지막 묶음인 웹 요청 처리로 들어간다. Spring MVC가 요청을 어떻게 처리하는지 그 동작 원리를 살펴보고, 직접 Controller를 만들어 본다.

 

'Spring > Spring 기초 및 세팅' 카테고리의 다른 글

Spring day 6  (0) 2026.06.23
Spring day 5  (0) 2026.06.22
Spring day 3  (0) 2026.06.20
Spring day 2  (0) 2026.06.19
Spring day 1  (0) 2026.06.17