본문 바로가기

CS/자바 스프링

[java spring] @ComponentScan를 이해하고 @Component과 @Configuration의 차이를 알아보자

@ComponentScan를 이해하고 @Component과 @Configuration의 차이를 알아보겠습니다.

 

@ComponentScan이란?

  • @Component 어노테이션이 붙은 클래스를 스캔해서 스프링 Bean으로 등록합니다.
  • 이때, @Servcie ,@Repository, @Controller 그리고 @Configuration은 @Component 어노테이션이 기본적으로 설정되어 있습니다.

 컴포넌트 스캔의 대상이 되도록 @Component 어노테이션이 전부 있습니다.


@ComponentScan의 스캔 기본 대상은?

1.@Component :
 - 컴포넌트 스캔에서 사용합니다.

2.@Controller : 
 - Spring의 4계층 구조에서 Presentation Layer(tier)를 담당하며, 주로 사용자의 요청을 받아 Service Layer에 처리를 위임하고
   이에 대한 처리 결과를 View를 통해 반환하는 역할을 합니다.

3.@Service :
 - Spring의 4계층 구조에서 Application Layer(응용 계층)을 담당하며, 주로 서비스의 비지니스 로직
    정의하는 layer 역할을 담당합니다.

4.@Repository : 
  - Spring의 4계층 구조에서 Infrastructure Layer(인프라 계층)을 담당하며, 주로 외부와의 통신 (DB,메세징 시스템)을 담당합니다.

5.@Configuration
 - 스프링 설정 정보에서 사용하거나 bean 등록을 위해 사용합니다. 

 


@Component란?

  • Component란 구성요소라는 뜻으로 컴포넌트는 독릭접인 단위 모듈입니다.
  • 스프링 부트에선 IoC 컨테이너에 등록된 클래스를 의미합니다.
  • 스프링 부트에서는 @Component이 붙은 클래스를 빈으로 등록합니다.

@Configuration이란?

  • @Configuration이라고 하면 설정파일인 (config)를 만들기 위한 애노테이션으로 사용되거나 Bean으로 등록하기 위해 사용됩니다.
  • 즉, @Configuration 어노테이션을 사용하면 설정파일로 등록하거나 bean으로 등록하기 위함을 알 수 있습니다.

 


공부를 하다보니 헷갈리는 부분이 있어 정리했습니다.

 

출처:

https://park-algorithm.tistory.com/entry/Component란

https://velog.io/@kureungkureung/Spring-ComponentScan#:~:text=%40ComponentScan%20이란%2C%20%40Component%20및,등록해주는%20역할을%20한다.

https://youwjune.tistory.com/40

https://kimeck.tistory.com/10

https://castleone.tistory.com/2https://castleone.tistory.com/2