How to use Spring Boot
import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({java.lang.annotation.ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Json2Bean { }
import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({java.lang.annotation.ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Json2Bean2 { }
@Component
public class MyHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver{
private static final Logger logger = LoggerFactory.getLogger(MyHandlerMethodArgumentResolver.class);
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container, NativeWebRequest request,
WebDataBinderFactory factory) throws Exception {
boolean b = parameter.hasParameterAnnotation(Json2Bean.class);
System.out.println("==============resolveArgument================" + b);
//According to different types, take different processing methods
if(b) {
logger.info("Json2Bean");
Test1 t = new Test1();
t.setName("Little King");
t.setAge("7");
return t;
}else {
logger.info("Json2Bean2");
return null;
}
//return null;
}
//supportsParameter returns true and executes the resolveArgument method
@Override
public boolean supportsParameter(MethodParameter parameter) {
System.out.println("==============supportsParameter========Return true and execute the resolveArgument method");
return true;
}
}
@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Autowired private AuthorizationInterceptor authorizationInterceptor; @Autowired private MyHandlerMethodArgumentResolver myHandlerMethodArgumentResolver; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(authorizationInterceptor).addPathPatterns("/**"); } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(myHandlerMethodArgumentResolver); } // @Override // public void addResourceHandlers(ResourceHandlerRegistry registry) { // registry.addResourceHandler("swagger-ui.html") // .addResourceLocations("classpath:/META-INF/resources/"); // // registry.addResourceHandler("/webjars/**") // .addResourceLocations("classpath:/META-INF/resources/webjars/"); // } }
@RequestMapping("/getTestByName") public @ResponseBody Test1 getUserByName(@Json2Bean Test1 test1){ System.out.println(test1); String name = test1.getName(); System.out.println(name); return test1; } @RequestMapping("/getTestByName2") public @ResponseBody Test1 getTestByName2(@Json2Bean2 Test1 test1){ System.out.println(test1); String name = test1.getName(); System.out.println(name); return test1; }