이전 게시물에서는 스프링 빈을 등록할때 @Bean
을 사용해 @Configuration
에 스프링 빈을 나열했다.
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
...
하지만 프로젝트가 커지면 많은 스프링빈을 다 등록하기가 힘들고 누락하는 경우도 생긴다 그리고 설정 정보도 커지게된다.
스프링에서는 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔
이라는 기능과 의존 관계를 자동으로 주입하는 @Autowired
를 제공한다.
@ComponentScan
사용@Component
어노테이션이 붙은 클래스를 스캔해서 스프링 빈에 등록@Configuration
@ComponentScan
public class AutoAppConfig {
}
@Component
어노테이션을 붙여준다.@Autowired
를 사용하면 된다.@Component
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository;
@Autowired
public MemberServiceImpl(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
...
@ComponentScan
은 @Component
가 붙은 모든 클래스를 스프링 빈으로 등록@Component("")
하면된다.