동일한 유형의 빈이 여러 개있는 경우 '@Inject'와 '@Qualifier'의 조합을 사용할 수 있어야합니다. 여기를 구성하는 방법입니다 - 측면에,
public class PostLoginUpdater implements PostLoginStatePersonalizer {
@Inject
@Qualifier("first")
private CustomerManager customerManager;
public void setCustomerManager(CustomerManager customerManager)
{
this.customerManager = customerManager;
}
}
또한 - 위와 같이 당신이 조각은 주입을 위해 다음과 같이 사용할 수, 유형 'CustomerManager'의 두 콩이 있다면
<bean id="PostLoginUpdater" class="xyz.auth.PostLoginUpdater" autowire="byType" />
<bean id="firstManager" class="xyz.manager.CustomerManager" autowire="byType" >
<qualifier>first</qualifier>
</bean>
<bean id="secondManager" class="xyz.manager.CustomerManager" autowire="byType" >
<qualifier>second</qualifier>
</bean>
참고 -
콩을 다른 콩보다 자주 사용하는 경우 '기본'속성을 사용할 수 있습니다.
예를 들어 위의 예에서 항상 'firstManager'를 사용하는 경향이있는 경우 아래에 표시된 것처럼 기본으로 표시 할 수 있습니다. 당신이 구성 위의 경우
<bean id="PostLoginUpdater" class="xyz.auth.PostLoginUpdater" autowire="byType" />
<bean id="firstManager" class="xyz.manager.CustomerManager" autowire="byType" primary="true" >
</bean>
<bean id="secondManager" class="xyz.manager.CustomerManager" autowire="byType" >
<qualifier>second</qualifier>
</bean>
다음 코드는 항상 규정자가 사용되지 않을 때 'firstManager'을 주입합니다 -
또한 @와 함께 @Qualifier 사용하려고 과거에 문제가 있었다
public class PostLoginUpdater implements PostLoginStatePersonalizer {
@Inject
private CustomerManager customerManager;
public void setCustomerManager(CustomerManager customerManager)
{
this.customerManager = customerManager;
}
}
, 그건. 'autowire' 속성은 각 속성에 대해 덮어 쓸 수있는 기본값만을 지정합니다. –