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