spring boot自定义参数注解
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.PARAMETER,ElementType.METHOD}) public @interface Test {}
@Configuration public class TestConfig implements WebMvcConfigurer { @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { resolvers.add(new TestArgumentResolver()); } @Override public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) { handlers.add(new TestArgumentResolver()); } }
public class TestArgumentResolver implements HandlerMethodArgumentResolver, HandlerMethodReturnValueHandler { @Override public boolean supportsParameter(MethodParameter parameter) { return parameter.hasParameterAnnotation(Test.class); } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { Result r = getVal(webRequest.getNativeRequest(HttpServletRequest.class), parameter); if (r.isSuccess()) return r.getData(); HttpServletResponse resp = webRequest.getNativeResponse(HttpServletResponse.class); resp.getWriter().write(r.getMessage()); resp.getWriter().flush(); return null; } @Override public boolean supportsReturnType(MethodParameter returnType) { return returnType.hasMethodAnnotation(Test.class); } @Override public void handleReturnValue(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception { HttpServletResponse resp = webRequest.getNativeResponse(HttpServletResponse.class); resp.getWriter().write(getResult(returnValue)); resp.getWriter().flush(); } }
@Test public int test(@Test int id) { return id; }
上一篇:
IDEA上Java项目控制台中文乱码