[SPRING] Spring은 Map bean을 autowire 할 수 없다.
SPRINGSpring은 Map bean을 autowire 할 수 없다.
나는 스프링을 다음과 같이 정의했다.
<util:map id="AdditionalParams" scope="prototype" map-class="java.util.HashMap"
key-type="java.lang.String" value-type="java.lang.String">
<entry key="Start" value="12345" />
<entry key="Finish" value="12365" />
</util:map>
그리고 나서 다음과 같이 정의 된 속성에이 bean을 autowiring합니다.
private @Autowired @Qualifier(value = "AdditionalParams") Map<String, String> additionalParams;
이 작업을 수행 할 때 예외가 throw됩니다.
어떤 아이디어?
건배.
해결법
-
==============================
1.Spring 4.3부터 @Autowired는 목록과 맵을 삽입 할 수 있으며 질문에 주어진 코드가 작동합니다.
Spring 4.3부터 @Autowired는 목록과 맵을 삽입 할 수 있으며 질문에 주어진 코드가 작동합니다.
그러나 더 낮은 버전의 Spring에서는 이와 같은 콜렉션을 autowire 할 수 없습니다. 그러나 다음을 수행 할 수 있습니다.
@Resource(name="AdditionalParams") private Map<String, String> additionalParams;
또는:
@Value("#{AdditionalParams}") private Map<String, String> additionalParams;
스프링 문서, 팁 섹션을 확인하십시오.
-
==============================
2.@Qualifier (value = "AdditionalParams")가 작동하지 않는 것 같습니다.
@Qualifier (value = "AdditionalParams")가 작동하지 않는 것 같습니다.
주석을 달아지도를 사용해보십시오.
@Resource private Properties AdditionalParams;
applicationContext.xml 파일을 손상시키지 않고 유지해야합니다.
-
==============================
3.
@Autowired ApplicationContext ctx; private <T> T getBean(String qualifier, Class<T> returnType){ //use this for loop to print all bean from ctx. so you wont miss the typo. /*for(String s:ctx.getBeanDefinitionNames()) log.info(s);*/ return ctx.getBean(qualifier, returnType); }
// 호출 내부
if(providerList == null){ providerList = ctx.getBean("providerList", Map.class); }
이 솔루션은 나에게 잘 작동합니다.
from https://stackoverflow.com/questions/13913752/spring-cant-autowire-map-bean by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] BeanName에 대한 BindingResult 또는 일반 대상 객체가 요청으로 사용 가능하지 않음 attr [duplicate] (0) | 2018.12.12 |
---|---|
[SPRING] javax.validation.constraints의 주석이 작동하지 않습니다. (0) | 2018.12.12 |
[SPRING] Spring 속성 자리 표시자를 해결할 수 없습니다. (0) | 2018.12.12 |
[SPRING] Spring에서 Generic type <T>의 Bean을 Autowire하는 법? (0) | 2018.12.12 |
[SPRING] Spring : 표준 로깅 측면 (인터셉터) (0) | 2018.12.12 |