[SPRING] Spring MVC에서 UUID 바인딩하기
SPRINGSpring MVC에서 UUID 바인딩하기
Spring MVC에서 UUID를 바인딩하는 가장 쉬운 방법은 다음과 같습니다.
@RequestMapping("/MyController.myAction.mvc")
@ResponseBody
public String myAction(UUID id, String myParam)...
위의 방법을 사용하면 다음 예외가 발생합니다.
org.springframework.beans.BeanInstantiationException:
Could not instantiate bean class [java.util.UUID]:
No default constructor found;
nested exception is java.lang.NoSuchMethodException: java.util.UUID.<init>()
이렇게 주변에 스커트가있는 다른 질문이 있지만 아무도 대답하지 않는 것 같습니다. 나는 봄 3.latest (실제로 4 EA)를 사용하고있다. 나는 이것을 달성하기위한 최신의 가장 단순한 방법을 연구하고있다.
해결법
-
==============================
1.UUID는 단순히 인스턴스화할 수없는 클래스입니다. 요청 매개 변수로 제공된다고 가정 할 때 먼저 @RequestParam을 사용하여 인수에 주석을 추가해야합니다.
UUID는 단순히 인스턴스화할 수없는 클래스입니다. 요청 매개 변수로 제공된다고 가정 할 때 먼저 @RequestParam을 사용하여 인수에 주석을 추가해야합니다.
@RequestMapping("/MyController.myAction.mvc") @ResponseBody public String myAction(@RequestParam UUID id, String myParam)...
이제 요청에 사용할 수있는 id라는 이름의 요청 매개 변수가 필요합니다. 매개 변수가 UUID로 변환됩니다. 그러나 현재로서는 문자열에서 UUID로 변환 할 수있는 것이 없기 때문에이 작업은 실패합니다.
이를 위해 이것을 할 수있는 변환기를 만드십시오.
public class StringToUUIDConverter implements Converter<String, UUID> { public UUID convert(String source) { return UUID.fromString(source); } }
이 클래스를 ConversionService에 연결하면 요청 매개 변수에 대한 UUID 변환이 있어야합니다. (이는 기본적으로 ConversionService를 사용하는 모든 것에 대한 요청 헤더 인 경우에도 작동합니다.) 당신은 또한 다른 방향 (UUID -> 문자열)에 대한 변환기를 갖고 싶어 할 수도 있습니다.
Spring MVC에 연결하는 것은 참조 가이드 (xml config를 사용한다고 가정)에서 잘 설명되어있다. 그러나 간단히 말해서 :
<mvc:annotation-driven conversion-service="conversionService"/> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="org.company.converter.StringToUUIDConverter"/> </set> </property> </bean>
참고 : Spring 3.2 Spring에서 StringToUUIDConverter가 추가되어 자동으로 등록됩니다.
-
==============================
2.아래의 변환기는 버전 3.2부터 스프링 프레임 워크 (코어)에서 사용할 수 있습니다.
아래의 변환기는 버전 3.2부터 스프링 프레임 워크 (코어)에서 사용할 수 있습니다.
org.springframework.core.convert.support.StringToUUIDConverter<String, java.util.UUID>
-
==============================
3.Header 매개 변수로 사용할 경우
Header 매개 변수로 사용할 경우
@RequestHeader(value="UUID") String id
모델에 들어 오면
@ModelAttribute(value="ModelName") Entity modelName
from https://stackoverflow.com/questions/20366304/bind-uuid-in-spring-mvc by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Eclipse에서 비어있는 웹 앱 라이브러리 - "jars"가 없습니다. (0) | 2019.04.07 |
---|---|
[SPRING] 인터페이스에 대한 Spring 의존성 삽입 (0) | 2019.04.07 |
[SPRING] 이클립스와 maven2를 사용하여 아파치 공유 로깅을 추가하는 방법은 무엇입니까? (0) | 2019.04.07 |
[SPRING] 스프링 보안 동시성 제어 (0) | 2019.04.07 |
[SPRING] Spring MVC에서 컨트롤러 로케일 찾기 (0) | 2019.04.07 |