[SPRING] Spring의 설정 파일에서 Bean의 속성 Enum 값을 할당하는 방법은 무엇입니까?
SPRINGSpring의 설정 파일에서 Bean의 속성 Enum 값을 할당하는 방법은 무엇입니까?
독립 실행 형 열거 형 정의 된,이 같은 :
package my.pkg.types;
public enum MyEnumType {
TYPE1,
TYPE2
}
자, 그 타입의 값을 bean 프라퍼티에 삽입하고 싶습니다 :
<bean name="someName" class="my.pkg.classes">
<property name="type" value="my.pkg.types.MyEnumType.TYPE1" />
</bean>
... 그리고 그것은 작동하지 않았다 : (
스프링 빈에 열거 형을 어떻게 주입해야합니까?
해결법
-
==============================
1."TYPE1"만 해봤습니까? 어쨌든 "타입"의 유형을 결정하기 위해 Spring이 리플렉션을 사용한다고 가정하기 때문에 정규화 된 이름은 중복됩니다. 봄은 일반적으로 중복을 신청하지 않습니다!
"TYPE1"만 해봤습니까? 어쨌든 "타입"의 유형을 결정하기 위해 Spring이 리플렉션을 사용한다고 가정하기 때문에 정규화 된 이름은 중복됩니다. 봄은 일반적으로 중복을 신청하지 않습니다!
-
==============================
2.value 속성 대신 value 하위 요소를 사용하고 Enum 클래스 이름을 지정합니다.
value 속성 대신 value 하위 요소를 사용하고 Enum 클래스 이름을 지정합니다.
<property name="residence"> <value type="SocialSecurity$Residence">ALIEN</value> </property>
value = "ALIEN"을 쓰는 것보다이 접근법의 장점은 Spring이 속성에서 열거 형의 실제 유형을 추론 할 수없는 경우에도 작동한다는 것입니다 (예 : 속성의 선언 된 유형이 인터페이스 임). araqnid의 설명에서 적응.
-
==============================
3.나는 이것이 정말로 오래된 질문이라는 것을 알고 있지만 누군가가 이것을하기위한 더 새로운 방법을 찾고 있다면 spring util 네임 스페이스를 사용하라 :
나는 이것이 정말로 오래된 질문이라는 것을 알고 있지만 누군가가 이것을하기위한 더 새로운 방법을 찾고 있다면 spring util 네임 스페이스를 사용하라 :
<util:constant static-field="my.pkg.types.MyEnumType.TYPE1" />
스프링 문서에 설명 된대로.
-
==============================
4."TYPE1"만 할 수 있습니다.
"TYPE1"만 할 수 있습니다.
-
==============================
5.이것이 저에게 해준 것입니다 MessageDeliveryMode는 bean이 값을 가질 enum입니다 PERSISTENT :
이것이 저에게 해준 것입니다 MessageDeliveryMode는 bean이 값을 가질 enum입니다 PERSISTENT :
<bean class="org.springframework.amqp.core.MessageDeliveryMode" factory-method="valueOf"> <constructor-arg value="PERSISTENT" /> </bean>
-
==============================
6.SPEL과 P-NAMESPACE 사용 :
SPEL과 P-NAMESPACE 사용 :
<beans... xmlns:p="http://www.springframework.org/schema/p" ...> .. <bean name="someName" class="my.pkg.classes" p:type="#{T(my.pkg.types.MyEnumType).TYPE1}"/>
-
==============================
7.추가 값을 추가하고 사용자 정의 유형에 쓰려면 Bean 편집기 (자세한 내용은 Spring Docs에 있음)를 작성할 수 있습니다.
추가 값을 추가하고 사용자 정의 유형에 쓰려면 Bean 편집기 (자세한 내용은 Spring Docs에 있음)를 작성할 수 있습니다.
-
==============================
8.Spring 통합 예제, 열거 형 필드를 기반으로 한 라우팅 :
Spring 통합 예제, 열거 형 필드를 기반으로 한 라우팅 :
public class BookOrder { public enum OrderType { DELIVERY, PICKUP } //enum public BookOrder(..., OrderType orderType) //orderType ...
config :
<router expression="payload.orderType" input-channel="processOrder"> <mapping value="DELIVERY" channel="delivery"/> <mapping value="PICKUP" channel="pickup"/> </router>
-
==============================
9.구체적으로, 열거 형 유형의 상수 이름 (예 : "TYPE1"또는 "TYPE2")로 값을 설정합니다 (아래 그림 참조). 그리고 그것은 작동 할 것이다 :
구체적으로, 열거 형 유형의 상수 이름 (예 : "TYPE1"또는 "TYPE2")로 값을 설정합니다 (아래 그림 참조). 그리고 그것은 작동 할 것이다 :
<bean name="someName" class="my.pkg.classes"> <property name="type" value="TYPE1" /> </bean>
from https://stackoverflow.com/questions/516771/how-to-assign-beans-property-an-enum-value-in-spring-config-file by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] OAuth2RestTemplate을 사용하는 방법? (0) | 2018.12.09 |
---|---|
[SPRING] Spring MVC 3에서 양식 제출 - 설명 (0) | 2018.12.09 |
[SPRING] Log4J를 봄으로 초기화 하시겠습니까? (0) | 2018.12.09 |
[SPRING] org.hibernate.proxy.pojo.javassist.Javassist 클래스에 대한 serializer가 없습니다. (0) | 2018.12.09 |
[SPRING] Spring : 모든 환경 속성에 Map 또는 Properties 객체로 액세스 (0) | 2018.12.09 |