2016-08-25 2 views
0

내 프로젝트를 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> 
+0

은'당신이에서 autowiring하지만 명시를 사용하지 않는 한 Qualifer', 여기에 아무것도하지 않는 @ xml을 사용하여 배선. 자동 와이어 링을 사용한다면'@ Autowired' 메소드에 주석을 달아야하고, XML 설정을 제거해야합니다. –

답변

0

Spring jira-SPR-9965 아래의 인용 부호로, Spring-4까지 유형 안전 형식으로 제네릭 타입을 주입 할 수있는 일반적인 지원은 없습니다.

응용 프로그램 레거시 코드에서 제네릭 형식이 제대로 처리되지 않아 문제가 발생했습니다. Spring-4 generics가 지원되면서 분명 해졌다. 응용 프로그램 코드를 수정했습니다.

학습과, 문서 및 참조에서 찾을 수 있습니다

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