목차
@Autowired 기능 제공@Component 애너테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록@Configuration이 붙은 설정 정보도 자동으로 등록된다.@Configuration 소스코드 안에 @Component 애노테이션이 붙어있기 때문에 @Configuration 도 스캔이 대상이 된다.Component Scan을 사용한 AppConfig
package hello.core;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
@Configuration //설정 정보임을 나타내는 어노테이션
[**@ComponentScan**](<https://nankisu.tistory.com/4>) ( //자동으로 @component가 붙은 스프링 빈을 끌어오는 기능
//기존의 수동으로 스프링 빈을 등록해주던 AppConfig도 @component가 붙어있기 때문에 자동 목록에서 제외해줘야 함
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig {
}
참고
@Configuration이 붙은 설정 정보도 자동으로 등록된다.🔽 기존의 AppConfig
@Configuration
public class AppConfig {
@Bean
public MemberService memberService(){
return new MemberServiceImpl(memberRepository());
}
@Bean
public OrderService orderService(){
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
@Bean
public MemoryMemberRepository memberRepository() {
return new MemoryMemberRepository();
}
@Bean
public DiscountPolicy discountPolicy(){
// return new FIxDiscountPolicy();
return new RateDiscountPolicy();
}
}