type별 autowiring은 여러 후보로 이어질 수 있으므로 선택 프로세스를 더 많이 제어해야 하는 경우가 많습니다. 이를 달성하는 한 가지 방법은 Spring의 @Primary 어노테이션을 사용하는 것입니다. @Primary는 여러 Bean이 단일 값 종속성에 자동 연결될 후보인 경우 특정 Bean에 우선순위를 부여해야 함을 나타냅니다. 후보 중에 정확히 하나의 기본 Bean이 존재하는 경우 이는 자동 연결 값이 됩니다.
firstMovieCatalog를 기본 MovieCatalog로 정의하는 다음 구성을 고려하세요.
@Configuration
public class MovieConfiguration {
@Bean
@Primary
public MovieCatalog firstMovieCatalog() { ... }
@Bean
public MovieCatalog secondMovieCatalog() { ... }
// ...
}
이전 구성을 사용하면 다음 MovieRecommender가 firstMovieCatalog와 함께 자동 연결됩니다.
public class MovieRecommender {
@Autowired
private MovieCatalog movieCatalog;
// ...
}
해당 Bean 정의는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
<bean class="example.SimpleMovieCatalog" primary="true">
<!-- inject any dependencies required by this bean -->
</bean>
<bean class="example.SimpleMovieCatalog">
<!-- inject any dependencies required by this bean -->
</bean>
<bean id="movieRecommender" class="example.MovieRecommender"/>
</beans>