[스프링 핵심 원리 - 기본편] 컴포넌트 스캔

dh·2023년 3월 20일
0
post-thumbnail

컴포넌트 스캔과 의존관계 자동 주입 시작하기

  • 지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 <bean> 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다.
  • 예제에서는 몇개가 안되었지만, 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고, 누락하는 문제도 발생한다.
  • 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다.
  • 또 의존관계도 자동으로 주입하는 @Autowired 라는 기능도 제공한다
@ComponentScan
public class AutoAppConfig {
 
}

컴포넌트스캔은 @Component어노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다.

위의 AutoAppConfig안에 의존관계 설정에 관한 내용이 아무것도 없다.
이전에는 @Bean으로 직접 설정했지만 이제는 @Autowired를 이용해 클래스안에서 의존관계 주입을 해결해야 한다.

public class OrderServiceImpl implements OrderService{

    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy;

  	// @Autowired 의존관계를 자동으로 주입받는다.
    @Autowired
    public OrderServiceImpl(MemberRepository memberRepository,  DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }


생성자에 @Autowired를 지정하면 스프링컨테이너가 자동으로 해당 스프링빈을 찾아서 주입한다.

컴포넌트 스캔의 기본 대상

  • @Component
  • @Controller
  • @Service
  • @Repository
  • @Configuration
    해당 어노테이션들은 기본적으로 @Component를 포함하고 있다

출처 김영한 스프링 핵심 원리 - 기본편

0개의 댓글