스프링에서 스프링 빈을 등록할려면
@Bean
어노테이션으로appConfig
파일에 직접 등록해줘야 한다. 하지만@Component
와@ComponentScan
어노테이션을 사용하면 편리하게 빈 등록이 가능하다
컴포너트 스캔은 이름 그대로
@Component
어노테이션이 붙은 클래스를 찾아서 스프링 빈에 등록해주는 기능을 가진다. 단,@Configuration
어노테이션이 붙은 설정 정보도 등록이 되기 때문에 filter 기능을 써야 한다.
@Configuration
이 붙은 클래스 말고도 사용자가 스프링 빈을 등록하고 싶지 않은 클래스도 추가 가능하다.
@ComponentScan(
excludeFilters = @Filter(type = FilterType.ANNOTATION,
classes =Configuration.class)
)
스프링 빈의 기본 이름은 클래스명에서 맨 앞글자만 소문자로 바꿔서 등록한다.
MemberServiceImpl
-> memberServiceImpl
@Component("name")
으로 등록하면 된다.스캔 대상의 범위의 디폴트 값은 @CompoenetScan
이 붙은 클래스의 패키지가 시작 위치가 된다.
별도의 스캔 범위를 지정하고 싶으면 basePackages 옵션을 사용하면 된다.
@CompoenetScan(basePackages="hello.core")
가장 좋은 방법은 @ComponentScan 이 붙은 클래스를 프로젝트 최상단에 두는 것이다.
컴포넌트 스캔은 @Component 뿐 만 아니라 아래와 같은 어노테이션이 붙은 클래스도 등록한다.
@Controller
: 스프링 MVC 컨트롤러에서 사용@Service
: 스프링 비즈니스 로직에서 사용@Repository
: 스프링 데이터 접근 계층에서 사용@Configuration
: 스프링 설정 정보에서 사용