2011-12-20 2 views
7

저는 Spring에서 EnumMap을 정의하려고 시도했습니다. 나는 다음과 같은 변화 Spring 3.0에서 EnumMap을 정의하는 방법

<util:map map-class="java.util.EnumMap" key-type="xyz.EnumType"> 
<entry key="SOME_ENUM_TYPE"> 
    <ref bean="someBean"/> 
</entry> 
</util:map> 

나는 다음과 같은 정의는 내가 처음

<util:map map-class="java.util.EnumMap"> 
<entry key="SOME_ENUM_TYPE"> 
    <ref bean="someBean"/> 
</entry> 
</util:map> 

노력이 나에게 할 수없는 몇 가지 오류를 준 것입니다

Error creating bean with name 'util:map#1c599b0e': Invocation of init method failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.EnumMap]: No default constructor found; nested exception is java.lang.NoSuchMethodException: java.util.EnumMap.<init>() 

다음과 같은 오류를 얻을

시도 열거 형을 String에 할당합니다.

사이트에 일반지도를 사용하는 예가 있지만 Enum 맵에 사용할 수 있는지 여부를 확인하려고합니다. 이는 Enum에 가장 적합하다고 판단되기 때문입니다. 대답은 매우 분명 할 수 있습니다. 질문이 멍청한 경우 사과드립니다. 이것은 아마도 스프링에 대한 나의 제한된 지식 때문일 것입니다. 감사합니다

답변

12

나는 을 <util:map>으로 초기화 할 수 없습니다. 그러나 EnumMap 기존 Map를 사용하는 생성자를 가지고, 당신은 그것을 사용하려고 할 수 있습니다 다음 EnumMap는 인수없이없는 기본 생성자를 가지고 있기 때문에

<bean class = "java.util.EnumMap"> 
    <constructor-arg> 
     <util:map key-type="xyz.EnumType"> 
      <entry key="SOME_ENUM_TYPE"><ref bean="someBean"/></entry> 
     </util:map> 
    </constructor-arg> 
</bean> 
+0

감사합니다. 저에게 도움이되었습니다. – Seagull

0

이 문제입니다. 스프링은 인자없이 초기화 될 것이고 존재하지 않는다면 에러가 될 것이다.

관련 문제