2012-01-25 3 views
2

내 프로젝트의 일부 구성을 Spring beans로 마이그레이션하려고합니다. 나는지도를 만들어야하는 시점에 완고하다.이지도의 가치는 열거 형의 방법이어야한다.스프링을 사용하여지도에 enum 값 삽입하기

봄로 이동해야하는 자바 코드는

map.put(key, Direction.Up.getIntVal()) 

같은 내가 날 수있는 좋은 링크 here을 (http://www.unicon.net/node/601)을 발견 보인다

<util:constant static-field="javax.naming.Context.INITIAL_CONTEXT_FACTORY"/> 

과 같이 일부 정적 필드를 참조하는 키 또는 val을 지정하지만 찾고있는 리소스를 찾을 수 없습니다. Spring을 사용하여 원하는 것을 달성 할 수있는 방법이 있습니까?

답변

1

FieldRetrievingFactoryBean을 사용해 보셨습니까? 당신은 그것에 here 읽을 수 있습니다.

<bean id="enum" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> 
    <property name="targetClass" value="package.name.Direction"/> 
    <property name="targetField" value="Up"/> 
</bean> 
<bean id="Direction.Up" factory-bean="enum" factory-method="getIntVal"/> 

<util:map id="emails"> 
    <entry key="key" value-ref="Direction.Up"/> 
</util:map> 

내가 구성을 확인하기 위해 오늘 아침에 약간의 시간을 보냈다이 당신의 필요에 따라 작동합니다 : 당신이지도를 코딩하려는 것을 감안할 때, 나는 설정이 같을 거라고 생각해. Enum Bean 정의를 축약하는 방법이있을 수 있지만 확실하지 않습니다.

+0

Direction이 열거 형이고 intVal이 전용 멤버 일 때이 방법이 효과가 있다고 생각하십니까 – Ashish

+0

초기 질문에서 열거 형에 대한 공용 메서드 getIntVal()이 있습니다. 값을'package.name.Direction.Up.intVal'로 설정하면, Spring은 그 마법의 무리를 가지며 실제로 Direction.Up.getIntVal()을 호출합니다. 그 값은 Bean Direction.Up에 저장됩니다. 내가 말했듯이, 나는 실제로이 문제를 직접 해본 적이 없지만 단순히 문서에서 읽은 것을 계속 진행하고 있습니다. –

+0

@Anish 위의 구성을 테스트하고 오늘 아침에 작동하는 것으로 업데이트했습니다. 희망이 도움이됩니다. –

1

클래스 내에 열거 형을 삽입하려면 완전히 열거 된 이름 인 enum 값을 사용하십시오. 당신이지도 안에 열거의 값을 원하기 때문에

<bean id="enumBean" 
    class="com.enumClass" factory-method="valueOf"> 
     <constructor-arg> 
      <value>enumVal</value> 
     </constructor-arg> 
</bean> 

<util:map id="enumMap"> 
    <entry key="key" ref="enumBean.intVal"/> 
</util:map> 

나는 here에서 약간의 도움을 얻었다. 이것이 도움이되는지 확인하십시오.

+0

내가 잘못 본 것이 없다면, 여기에서 enum은 Spring XML 자체 내에서 정의되고있다. 필자의 경우 enum은 Java이고 enum의 메소드를 참조해야한다. – Ashish

+0

@Ashish, 우리가 열거 형의 속성에 액세스해야한다면 bean으로 가질 필요가 있다고 생각했습니다. 을 사용해 보셨습니까? –

+0

그 열거 형을 빈으로 변환하는 것은 나의 최후의 수단이 될 것입니다. bcz 내 응용 프로그램에 그런 열거 형이 많이 있습니다. 다른 해결 방법을 찾지 못하면 모든 것을 bean으로 옮겨야 할 것입니다. 정적 태그를 태그의 정적 정적 속성에 사용했기 때문에 정적 필드를 시도하지 않았습니다. 여기에는 공개 메서드를 통해서만 액세스 할 수있는 열거 형의 전용 속성이 있습니다. – Ashish

관련 문제