🧐강의🧐
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
🫧 @ComponentScan
☑️ @Component 가 붙은 모든 클래스를 스프링 빈으로 등록 (설정 정보 없이 스프링 빈 자동 등록)
· 스프링 빈 이름 기본 규칙 : 클래스명 (맨 앞글자만 소문자로 변경)
》ex) MemberServiceImpl → memberServiceImpl
》빈 이름 직접 지정 : @Component("memberService2")
🫧 @Autowired
☑️ 생성자에 @Autowired 지정 시, 스프링 컨테이너가 해당 스프링 빈 의존 관계 자동 주입
TEST
☑️ @Component, @Autowired 애노테이션 지정으로 등록된 스프링 빈 의존 관계 확인하기
1. main/java/hello.core/AutoAppConfig Class 생성
@Configuration
@ComponentScan(
// AppConfig 설정 정보 제외하기
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig { }
2. 구현체에 @Component, @Autowired 애노테이션 지정
· MemoryMemberRepository : @Component
· RateDiscountPolicy : @Component
· MemberServiceImpl : @Component & @Autowired
· OrderServiceImpl : @Component & @Autowired
3. test/java/hello.core/scan Package 생성
4. scan 패키지에 AutoAppConfigTest Class 생성
public class AutoAppConfigTest {
@Test
void basicScan() {
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);
MemberService memberService = ac.getBean(MemberService.class);
assertThat(memberService).isInstanceOf(MemberService.class);
}
}
· 테스트 결과
'Spring > 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
[컴포넌트 스캔] 필터 - includeFilters, excludeFilters (2) | 2023.12.07 |
---|---|
[컴포넌트 스캔] 기본 스캔 대상 (1) | 2023.12.07 |
[싱글톤 컨테이너] @Configuration - 싱글톤 보장 (0) | 2023.12.01 |
[싱글톤 컨테이너] 싱글톤 방식의 주의점 - 무상태(stateless) 설계 (0) | 2023.11.30 |
[싱글톤 컨테이너] 싱글톤 패턴의 문제를 해결하는 스프링 컨테이너 (0) | 2023.11.29 |