J'ai migré mon projet de spring-3.1.2 et java-6 vers Spring-4.1.6 et java-8. Les méthodes Setter avec l'annotation Spring @Qualifier ne sont pas appelées après cette migration, ce qui entraîne des valeurs nulles pour les variables données.Edition Spring4 - Méthodes Setter avec l'annotation Spring @Qualifier non invoquée
Veuillez noter qu'il n'y a pas d'exception de ressort levée. Juste que Spring-4 n'invoque pas les méthodes setter avec l'annotation @Qualifier.
Les fèves sont dans un emballage différent de ce paquet de classe. Toutefois, le package correspondant est importé dans ma classe.
Veuillez aviser si une configuration supplémentaire de Spring-4 (version 4.1.6) est nécessaire?
est Ci-dessous bout de code échantillon:
Ma classe avec 2 attributs privés:
private ExtractionContextBasedSyntheticAwareAssetIdentitiesProvider<AssetId> syntheticAwareProvider;
private ExtractionContextBasedSyntheticAwareAssetIdentitiesProvider<AssetId> sfmSyntheticAwareProvider;
setters correspondants méthodes sont:
public void setSyntheticAwareProvider(
@Qualifier("extractionContextBasedSyntheticAssetIdentitiesProvider") ExtractionContextBasedSyntheticAwareAssetIdentitiesProvider<AssetId> syntheticAwareProvider) {
this.syntheticAwareProvider = syntheticAwareProvider;
}
public void setSfmSyntheticAwareProvider(
@Qualifier("extractionContextBasedSfmSyntheticAssetIdentitiesProvider") ExtractionContextBasedSyntheticAwareAssetIdentitiesProvider<AssetId> sfmSyntheticAwareProvider) {
this.sfmSyntheticAwareProvider = sfmSyntheticAwareProvider;
}
beans.xml correspondant est:
<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>
Le '@ Qualifer' ne rien ici, comme vous ne l'utilisez autowiring mais explicite câblage en utilisant xml. Si vous utilisez autowiring, vous devez également annoter la méthode avec '@ Autowired' et vous devez supprimer la configuration xml car cela n'a aucun sens. –