🧐강의🧐
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard
✨ 탐색할 패키지의 시작 위치 지정하기
· AutoAppConfig
...
@Configuration
@ComponentScan(
// 탐색할 패키지 시작 위치 지정하기
basePackages = "hello.core.member",
// 지정한 클래스의 패키지를 탐색 시작 위치로 지정하기
basePackageClasses = AutoAppConfig.class,
...
)
public class AutoAppConfig { }
✅ basePackages : 탐색할 패키지의 시작 위치 지정, 모든 하위 패키지 탐색
✅ basePackageClasses : 미지정 시, @ComponentScan 이 붙은 설정 정보 클래스의 패키지가 시작 위치
☑️ 권장하는 방법
1. 패키지 위치 지정 X
2. 프로젝트 최상단에 설정 정보 클래스 두기
- 스프링 부트가 기본으로 제공하는 방법
✨ 컴포넌트 스캔 기본 대상
- @Component : 컴포넌트 스캔에서 사용
- @Controller : 스프링 MVC 컨트롤러에서 사용
- @Service : 스프링 비즈니스 로직에서 사용 (비즈니스 계층 인식)
- @Repository : 스프링 데이터 접근 계층에서 사용 (데이터 계층의 예외를 스프링 예외로 변환)
- @Configuration : 스프링 설정 정보에서 사용 (스프링 빈이 싱글톤을 유지하도록 추가 처리)
참고
- 애노테이션에는 상속 관계가 없음 : 특정 애노테이션 인식 → 스프링 기능
- useDefaultFilters 옵션 : 기본으로 활성화되어 있으며, 중지 시 기본 스캔 대상들이 제외됨
- 컴포넌트 스캔에서 같은 빈 이름 등록 시
→ 자동 빈 vs. 자동 빈 : ConflictingBeanDefinitionException 예외 발생
→ 자동 빈 vs. 수동 빈 : 수동 빈이 자동 빈 오버라이딩 (최근에는 오류 발생)
'Spring > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
[의존 관계 자동 주입] 생성자 주입 선택하기 (2) | 2023.12.18 |
---|---|
[컴포넌트 스캔] 필터 - includeFilters, excludeFilters (2) | 2023.12.07 |
[컴포넌트 스캔] @Component, @Autowired - 의존 관계 자동 주입 (0) | 2023.12.05 |
[싱글톤 컨테이너] @Configuration - 싱글톤 보장 (0) | 2023.12.01 |
[싱글톤 컨테이너] 싱글톤 방식의 주의점 - 무상태(stateless) 설계 (0) | 2023.11.30 |