@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 |