더북(TheBook)

빈을 기본으로 정의하기

이 절 앞부분에서는 스프링 컨텍스트에서 같은 종류의 빈을 여러 개 가질 수 있지만 이름을 사용하여 참조해야 한다고 설명했다. 종류가 같은 빈이 여러 개 있을 때는 컨텍스트에서 빈을 참조할 때 다른 방법을 선택할 수 있다.

스프링 컨텍스트에 동일한 종류의 빈이 여러 개 있다면 그중 하나를 기본(primary) 빈으로 만들 수 있다. @Primary 애너테이션을 사용하여 기본으로 설정하려는 빈을 표시한다. 기본 빈은 선택할 빈이 여러 개 있고 사용자가 이름을 지정하지 않을 때 스프링이 선택하는 빈이다. 단순히 말하면, 스프링의 디폴트 빈이다. 다음 코드는 @Primary 애너테이션된 @Bean 메서드가 어떤 모습인지 보여 준다.

@Bean
@Primary
Parrot parrot2() {
    var p = new Parrot();
    p.setName("Miki");
    return p;
}

이름을 지정하지 않고 Parrot을 참조하는 경우 이제 스프링은 기본적으로 Miki를 선택한다. 물론 한 타입의 빈에서는 하나의 빈만 기본으로 정의할 수 있다. 이 예제는 sq-ch2-ex5 프로젝트에 구현되어 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.