각 구현체클래스에
@Component 붙여두면
@Configuration
@ComponentScan(
excludeFilters = @ComponentScan.Filter(type= FilterType.ANNOTATION,classes = Configuration.class)
)
public class AutoAppConfig {
}
이렇게 @ComponentScan 달아두면 저 @Component 붙여둔거 다 찾아서 빈으로 등록시켜 줌..
@ComponentScan에 저거는 필터인데, 저거 빼고 등록시켜준다는 거임.
참고로 각 구현체의 생성자에 @Autowired 달아야 자동 의존관계 주입해줌. Bean Container에서 찾아서 넣어줌.
실무에서는 저렇게 필터는 안하는데,
@Configuration
static class ExtendsConfig{
@Bean
public DiscountPolicy rateDiscountPolicy(){
return new RateDiscountPolicy();
}
@Bean
public DiscountPolicy fixDiscountPolicy(){
return new FixDiscountPolicy();
}
}
이렇게 테스트 한다고 해둔게 있어서..
여튼 저렇게 컴포넌트 스캔으로 빈에 등록하면 자동으로 등록되고, bean 이름은 Component 붙인 구현체 이름..
에서 앞에 소문자로 memberServiceImpl 이런 식으로..
그리고 이름도 @Component("memberService") 이런 식으로 할 수는 있음..
근데 나 솔직히 이거 안 쓸듯.. 구현체 이름이 bean 이름으로 되는 것도 별로고, 한눈에 의존관계 보이지도 않고, 갈아끼울때도 일일히 들어가서 @Component 지우고.. 등등
'스프링 > 1. 스프링 핵심 원리' 카테고리의 다른 글
32강. 충돌, 중복등록 (0) | 2023.07.21 |
---|---|
31강. 필터 (0) | 2023.07.21 |
28강. @Configuration가 싱글톤을 보장해주는 방식 (0) | 2023.07.20 |
27강. 스프링 컨테이너와 싱글톤 (0) | 2023.07.18 |
26강. BeanDefinition (0) | 2023.07.18 |