@SpringBootAplication을 Ctrl+클릭 시, 아래와 같은 구성으로 되어있다는 것을 알 수 있다.
📟 < SpringBootConfiguration >
@SpringBootConfiguration Annotation은 Spring Boot에 관련된 설정을 나타내며, 사실상 @Configuration을 확장한 것이다. 주의할 점은, 일반적으로 개발자들이 직접 사용하는 Annotation은 아니라는 것이다.
📟 < ComponentScan >
@ComponentScan은 Spring에서 관리할 Bean을 찾는 역할을 한다. @Component를 상속한 다른 Annotation(@Service,@Repository,@Controller 등)을 붙인 Class를 Bean으로 등록한다.
이 Annotation은 보통 Spring Boot의 Main Class나 Setting Class에 붙여 사용한다.Spring Boot App을 생성하면 Main Class에 @SpringBootApplication Annotation이 붙는데, 이 Annoation 안에 @ComponentScan이 포함되어 있는 것이다. 그래서 따로 @ComponentScan을 사용할 필요가 없는 경우가 많다.
@Component를 포함하는 다른 Annotation들이 있으며, 이들은 개발 과정 중 특정 용도에 따라 사용된다. 몇 가지 중요한 Annotation을 간단하게 살펴보자.
Annotation | description |
@Configuration | 설정 파일 등록 |
@Repository | ORM Mapping |
@Controller,@RestController | Routing 처리 |
@Service | Business Logic 처리 |
📟 < EnableAutoConfiguration >
Spring Boot에서 자동 구성을 활성화하는 Annotation이다. Spring boot Server가 실행될 때 Spring Boot의 Meta file을 읽고 정의된 설정들을 자동으로 구성하는 역할을 수행한다.
예제 코드로 Bean이 어떻게 등록되는지 알아보자.
@RestController
public class TestController {
@GetMapping("/test")
public String test() {
return "Hello, world!";
}
}
@RestController Annotation은 Route 또는 Endpoint로 작동한다. 예를 들어,
@RestController Annotation이 붙은 Class 내에 정의된 test method가 /test 라는 GET 요청에 응답하도록 설정할 수 있다.
직접 살펴보면 의문이 풀릴 것이다.
하지만, 여기서 @RestController와 @Component 차이점에 대해 의문이 생길 수 있다.
이 두 Annotation은 어떻게 서로 다른 용도를 가지면서 동시에 Spring에서는 같은 방식으로 취급 될까?
@RestController Annotation을 Ctrl+클릭하면 구현하는 RestController.java file로 이동할 것이다.
코드를 보면 @Controller, @ResponseBody Annotation이 함께 있는데. 이 코드를 보면
@Controller Annotation + @ ResponseBodyt Annotation이 합쳐진 결과물이 @RestController Annotation임을 알 수 있다.
그런데 아직도 @ComPonent Annotation을 찾지 못했다.
계속해서 @Controller Annotation 구현 파일인 Controller.java File로 이동해보자.
위와 같이 @Component Annotation이 있다. 이를 통해 @Controller Annotation이 @ComponetScan을 통해 Bean으로 등록되는 이유를 알았다. 그 이유는 바로 @Controller Annotation에서 @Component Annotation을 상속하고 있기 때문이다.
앞서 소개한 @Configuration,@Repositiory,@Service Annotation 모두 @Component Annotation을 가지고 있다.
출처 : 스프링 부트 3 백엔드 개발자 되기 - 자바 편
http://www.yes24.com/Product/Goods/118625612
'스프링부트' 카테고리의 다른 글
Spring Boot Request~Response Process (0) | 2023.05.18 |
---|---|
Spring Boot3 구조 (0) | 2023.05.18 |
@SpringBootApplication (0) | 2023.05.18 |
Portable Service Abstraction (0) | 2023.05.18 |
관점 지향 프로그래밍(Aspect Oriented Programming) (0) | 2023.05.18 |