2016-08-25 10 views
0

私のプロジェクトをspring-3.1.2とjava-6からSpring-4.1.6とjava-8に移行しました。 Spring @Qualifier注釈付きセッターメソッドは、このマイグレーションの後に呼び出されず、その結果、指定された変数に対してヌル値が返されます。Spring4 issue- Spring @Qualifierアノテーションが呼び出されないセッターメソッド

春の例外はありません。ちょうどSpring-4は@Qualifierアノテーションを持つセッターメソッドを呼び出さない。

豆は、このクラスパッケージとは異なるパッケージです。しかし、対応するパッケージは私のクラスにインポートされます。

追加の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> 
+0

'あなたはオートワイヤリングが、明示的に使用していないようQualifer'は、ここでは何もしません@ xmlを使用した配線。オートワイヤリングを使用している場合は、メソッドに '@ Autowired'メソッドをアノテートする必要があります。そうすることで意味をなさないので、XML設定を削除する必要があります。 –

答えて

0

Spring-4まで、SpringJira-SPR-9965の下に引用符を付けると、タイプセーフな方法でジェネリック型を注入するための一般的なサポートはありません。

アプリケーションレガシーコードでジェネリック型が正しく処理されなかったため、問題が発生しました。 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