@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

 

스프링 부트 3 백엔드 개발자 되기 - 자바 편 - YES24

- 자바 백엔드 개발자가 되고 싶다면- 자바 언어 입문 그다음에 꼭 보세요실력을 갖춘 개발자로 성장하려면 시작이 중요합니다. 그래서 이 책은 무엇부터 익혀야 하는지 막막한 입문자에게 백엔

www.yes24.com

 

'스프링부트' 카테고리의 다른 글

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

+ Recent posts