내 프로젝트를 Spring 3.1.2 및 Java 6에서 Spring 4.1.6 및 java 8로 마이그레이션했다. Spring @Qualifier 주석이있는 Setter 메소드는이 마이그레이션 후에 호출되지 않아 주어진 변수에 대해 null 값을 갖습니다.Spring4 issue- Spring @Qualifier 주석을 가진 Setter 메소드가 호출되지 않는다.
스프링 예외가 발생하지 않으므로주의하십시오. 스프링 -4는 @Qualifier 주석을 가진 setter 메소드를 호출하지 않는다.
콩은이 클래스 패키지와 다른 패키지입니다. 그러나 해당 패키지는 내 수업에 가져옵니다.
추가로 Spring-4 (버전 4.1.6) 구성이 필요한지 잘 알고 싶으십니까? 다음은
샘플 코드 조각입니다 :2 개 개인 속성을 내 클래스 :
private ExtractionContextBasedSyntheticAwareAssetIdentitiesProvider<AssetId> syntheticAwareProvider;
private ExtractionContextBasedSyntheticAwareAssetIdentitiesProvider<AssetId> sfmSyntheticAwareProvider;
대응 세터 방법은 다음과 같습니다
public void setSyntheticAwareProvider(
@Qualifier("extractionContextBasedSyntheticAssetIdentitiesProvider") ExtractionContextBasedSyntheticAwareAssetIdentitiesProvider<AssetId> syntheticAwareProvider) {
this.syntheticAwareProvider = syntheticAwareProvider;
}
public void setSfmSyntheticAwareProvider(
@Qualifier("extractionContextBasedSfmSyntheticAssetIdentitiesProvider") ExtractionContextBasedSyntheticAwareAssetIdentitiesProvider<AssetId> sfmSyntheticAwareProvider) {
this.sfmSyntheticAwareProvider = sfmSyntheticAwareProvider;
}
해당 beans.xml 환경은 다음과 같습니다
<bean id="extractionContextBasedSfmSyntheticAssetIdentitiesProvider"
class="com.package.ExtractionContextBasedSfmSyntheticAwareAssetIdentitiesProviderImpl">
<property name="sfmSyntheticAwareAssetPidDAO" ref="sfmSyntheticAwareAssetPidDAO" />
</bean>
<bean id="extractionContextBasedSyntheticAssetIdentitiesProvider"
class="com.package.ExtractionContextBasedSyntheticAwareAssetIdentitiesProviderImpl">
<property name="syntheticAwareAssetPidDAO" ref="syntheticAwareAssetPidDAO" />
</bean>
은'당신이에서 autowiring하지만 명시를 사용하지 않는 한 Qualifer', 여기에 아무것도하지 않는 @ xml을 사용하여 배선. 자동 와이어 링을 사용한다면'@ Autowired' 메소드에 주석을 달아야하고, XML 설정을 제거해야합니다. –