개인공부

@ComponentScan

lby132 2021. 11. 2. 22:57

@ComponentScan으로 여러가지를 할 수 있는데 그 중

@ComponentScan(
basePackages = "hello2.core2",
excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)

)

 

excludeFilters 를 사용해서 @Configuration 어노테이션이 붙은 클래스를 막을 수도 있고 

basePackages를 해서 탐색 위치를 정할수있다. 

basePackages = {"hello.core", "hello.service"} 이런식으로 여러 시작 위치를 정할수도 있다.

 

basePackage를 만약 정해주지 않는다면 자동으로 @ComponentScan이 붙은 설정 정보 클래스의 패키지가 시작 위치가 된다.

그래서 권장하는 방법은 그 설정 정보 클래스를 가장 상단에 두는 것이다.

예를 들면

hello.core

hello.core.service

hello.core.repository

이렇게 세 패키지가 있으면 hello.core 패키지에 AppConfig같은 설정 정보를 두는것이다. 거기다 @ComponentScan를 붙이고 basePackages 를 생략한다. 스프링 부트도 이방법을 기본으로 제공한다.

이렇게 하면 hello.core를 포함한 하위는 모두 컴포넌트 스캔 대상이 된다.

그리고 프로젝트 메인 설정 정보는 시작루트에 놓는게 좋다. 

 

참고로 스프링 부트는 @SpringBootApplication를 이 프로젝트 시작 루트 위치에 두는것이 좋다. 이 안엔 @ComponentScan이 있다.

 

@Service - 스프링 비즈니스 로직에 사용

@Repository - 스프링 데이터 접근 계층에 사용

@Configuration - 스프링 설정 정보에 사용

 

 

 

-------------------여기서 부터 복붙 참고-----------------

'개인공부' 카테고리의 다른 글

Token 사용이유  (0) 2021.11.08
생성자 주입으로 불변하게 설계한다.  (0) 2021.11.03
빈 스코프  (0) 2021.11.01
DB LOCK  (0) 2021.10.27
BeanFactory  (0) 2021.10.26