김영한님의 스프링 핵심 원리 강의 학습 내용입니다.
컴포넌트 스캔과 의존관계 자동 주입
@Configuration
@ComponentScan(basePackages = "com.example.corestudy.member", basePackageClasses = AutoAppConfig.class,)
public class AutoAppConfig {
}
- @Configuration : @Component를 포함하고 있다.
- @ComponentScan : Component가 붙은 클래스를 스캔해 스프링 빈으로 등록
- @Autowired : 생성자에 붙여 의존관계를 자동 주입
- basePackages : 탐색할 패키지 시작 위치 지정, 이 패키지를 포함한 하위 패키지 모두 탐색
- basePackageClasses : 지정 클래스의 패키지를 탐색 시작 위치로 지정
- 권장 방법 : 설정 정보 클래스 위치를 프로젝트 최상단에 두기
ComponentScan 기본 대상
- @Component
- @Controller : 스프링 MVC 컨트롤러
- @Service : 스프링 비즈니스 로직
- @Repository : 스프링 데이터 접근 계층
- @Configuration : 스프링 설정 정보, 스프링 빈 싱글톤 유지
필터
- includeFilter : 컴포넌트 스캔 대상 추가
- excludeFilter : 컴포넌트 스캔 대상 제외
의존관계 주입 방법
- 생성자 주입 - 불변, 필수
- 수정자 주입 - 선택, 변경
- 필드 주입
- 일반 메서드 주입
옵션처리
- @Autowired(required = false)
- @Nullable
- Optional<>
조회 대상 빈이 2개 이상일 때
- @Autowired 필드 명, 파라미터 명 매칭
- @Quilifier 끼리 매칭
- @Primary - 우선순위 정하기
조회한 빈이 모두 필요할 때