Fine-tuning Annotation-based Autowiring with @Primary
2023. 7. 8. 19:06ㆍSpring Framework/Spring IoC
Fine-tuning Annotation-based Autowiring with @Primary
자동 주입 시 타입에 의해 여러 후보가 생길 수 있기 때문에, 종종 선택 과정을 더 잘 제어할 필요가 있습니다. 이를 해결하는 한 가지 방법은 Spring의 @Primary
어노테이션을 사용하는 것입니다. @Primary
는 특정 빈이 자동 주입을 위한 단일 값 의존성에 여러 후보가 있을 때 우선적으로 선택되도록 지정합니다. 후보 중에 정확히 하나의 @Primary
빈이 존재하면, 해당 빈이 자동 주입됩니다.
다음은 firstMovieCatalog
을 MovieCatalog
의 기본 빈으로 정의한 구성 예시입니다:
Java
@Configuration
public class MovieConfiguration {
@Bean
@Primary
public MovieCatalog firstMovieCatalog() {
// ...
}
@Bean
public MovieCatalog secondMovieCatalog() {
// ...
}
// ...
}
위의 구성에 따라, 아래의 MovieRecommender
클래스는 firstMovieCatalog
빈으로 자동 주입됩니다:
Java
public class MovieRecommender {
@Autowired
private MovieCatalog movieCatalog;
// ...
}
다음은 이에 해당하는 빈 정의입니다:
<?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">
<!-- 이 빈에 필요한 의존성을 주입 -->
</bean>
<bean class="example.SimpleMovieCatalog">
<!-- 이 빈에 필요한 의존성을 주입 -->
</bean>
<bean id="movieRecommender" class="example.MovieRecommender"/>
</beans>
'Spring Framework > Spring IoC' 카테고리의 다른 글
Bean Overview (0) | 2024.06.11 |
---|---|
Dependencies and Configuration in Detail (0) | 2023.12.10 |
Dependency Injection of Spring Framework (0) | 2023.05.01 |
Bean Definition Inheritance (0) | 2023.04.28 |
Introduction to the Spring IoC Container and Beans, Container Overview (0) | 2023.04.25 |