[SPRING] 요청 매개 변수를위한 커스텀 Spring 애노테이션
SPRING요청 매개 변수를위한 커스텀 Spring 애노테이션
주석에 따라 Spring 요청이나 경로 매개 변수를 수정하는 커스텀 주석을 작성하고 싶습니다. 예를 들어 다음 코드 대신 :
@RequestMapping(method = RequestMethod.GET)
public String test(@RequestParam("title") String text) {
text = text.toUpperCase();
System.out.println(text);
return "form";
}
주석을 달 수 있습니다. @UpperCase :
@RequestMapping(method = RequestMethod.GET)
public String test(@RequestParam("title") @UpperCase String text) {
System.out.println(text);
return "form";
}
그것이 가능하고 가능하면 어떻게 할 수 있습니까?
해결법
-
==============================
1.사람들이 주석에서 말했듯이 주석 중심의 사용자 정의 해결자를 쉽게 작성할 수 있습니다. 4 단계,
사람들이 주석에서 말했듯이 주석 중심의 사용자 정의 해결자를 쉽게 작성할 수 있습니다. 4 단계,
@Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface UpperCase { String value(); }
public class UpperCaseResolver implements HandlerMethodArgumentResolver { public boolean supportsParameter(MethodParameter parameter) { return parameter.getParameterAnnotation(UpperCase.class) != null; } public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { UpperCase attr = parameter.getParameterAnnotation(UpperCase.class); return webRequest.getParameter(attr.value()).toUpperCase(); } }
<mvc:annotation-driven> <mvc:argument-resolvers> <bean class="your.package.UpperCaseResolver"></bean> </mvc:argument-resolvers> </mvc:annotation-driven>
또는 자바 설정
@Configuration @EnableWebMvc public class Config extends WebMvcConfigurerAdapter { ... @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(new UpperCaseResolver()); } ... }
public String test(@UpperCase("foo") String foo)
from https://stackoverflow.com/questions/30715579/custom-spring-annotation-for-request-parameters by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 최고의 스프링 배치 스케일링 전략 (0) | 2019.03.02 |
---|---|
[SPRING] 스프링 보안을 이용한 싱글 사인온 통합 (0) | 2019.03.02 |
[SPRING] 로그인 한 사용자를 기반으로 런타임 중에 데이터베이스 스키마 변경 (0) | 2019.03.02 |
[SPRING] Spring MVC REST는 JAX-RS와 호환되지 않는다. 상관이 있나? [닫은] (0) | 2019.03.02 |
[SPRING] Spring 보안에서 registerGlobal (), configure (), configureGlobal (), configureGlobalSecurity 간의 차이점 (0) | 2019.03.02 |