본문 바로가기

Java

[Spring] Component

반응형

Component

@ComponentScan : @Component가 붙은 클래스를 전부 찾아서 스프링 빈으로 등록 해주는 역할을 한다.

  • 주의
    컴포넌트 스캔을 사용하면 @Configuration 이 붙은 설정 정보도 자동으로 등록되기 때문에 excludeFilters 를 이용해서 설정 정보는 컴포넌트 스캔 대상에서 제외했다. 보통 설정 정보를 컴포넌트 스캔 대상에서 제외하지는 않지만 기존 코드를 최대한 남기기 위해 선택했다.
  • @Configuration 이 컴포넌트 스캔의 대상이 된 이유는 @Component 가 Configuration 코드에 붙어있기 때문이다.
package hello.core.order;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
/*
@ComponentScan(
        basePackages = "hello.core.member",
        excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
basePackage를 안주면 소스의 패키지인 hello.core 하위를 전부 search한다.

 */
@Configuration
@ComponentScan(
        excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig {


}

컴포넌트 스캔 기본대상

컴포넌트 스캔은 @Component뿐만 아니라 다음과 같은 내용도 추가로 대상에 포함한다.

  • @Component : 컴포넌트 스캔에서 사용
  • @Controller :스프링 MVC 컨트롤러에서 사용
  • @service : 스프링 비즈니스로직에서 사용
  • @Repository : 스프링 데이터 접근 계층에서 사용
  • @Configuration : 스프링 설정 정보에서 사용
반응형

'Java' 카테고리의 다른 글

[Spring] Option 처리  (0) 2022.01.01
[Spring] 의존관계 주입 방법  (0) 2021.12.30
[Java] Lambda function 예제  (0) 2021.12.28
[Spring] Configuration N SingleTon  (0) 2021.12.27
[Spring] SingleTon 단점  (0) 2021.12.27