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>