2016-08-25 47 views
0

我已將我的項目從spring-3.1.2和java-6遷移到Spring-4.1.6和java-8。使用Spring @Qualifier註解的Setter方法在此遷移後不會被調用,從而導致給定變量的值爲空值。Spring4發佈--Spring @Qualifier註解沒有被調用的Setter方法

請注意,沒有彈簧異常拋出。只是Spring-4不會使用@Qualifier註釋調用setter方法。

這些bean與這個類包中的包是不同的。但是,相應的包會導入到我的課程中。

如果需要額外的Spring-4(version-4.1.6)配置,請多加建議?

下面是示例代碼片段:

我有2個私人屬性類:

private ExtractionContextBasedSyntheticAwareAssetIdentitiesProvider<AssetId> syntheticAwareProvider; 
private ExtractionContextBasedSyntheticAwareAssetIdentitiesProvider<AssetId> sfmSyntheticAwareProvider; 

相應的setter操作方法是:

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> 
+0

的'@ Qualifer'什麼也不做在這裏,因爲你不使用自動裝配,但明確使用xml進行接線。如果你正在使用自動裝配,你還必須使用'@ Autowired'註釋該方法,並且你應該刪除xml配置,因爲這樣做沒有任何意義。 –

回答

0

在Spring jira- SPR-9965之下引用,直到Spring-4,沒有普遍支持以類型安全的方式注入泛型類型。

問題產生的原因是泛型類型在我們的應用程序遺留代碼中沒有正確處理。隨着Spring-4泛型支持,它變得明顯。我已更正我們的應用程序代碼。

Futher,文檔和參考可以在這裏找到:

https://jira.spring.io/browse/SPR-9965

https://www.jayway.com/2013/11/03/spring-and-autowiring-of-generic-types/

https://spring.io/blog/2013/12/03/spring-framework-4-0-and-java-generics

相關問題