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);
//根据不同的类型走不同的处理方式
if(b) {
logger.info("Json2Bean");
Test1 t = new Test1();
t.setName("小王");
t.setAge("7");
return t;
}else {
logger.info("Json2Bean2");
return null;
}
//return null;
}
//supportsParameter 返回true 执行 resolveArgument方法
@Override
public boolean supportsParameter(MethodParameter parameter) {
System.out.println("==============supportsParameter========返回true 执行 resolveArgument方法");
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; }
相关推荐
springmvc自定义属性编辑器和参数解析器
有备注,有实例,下载就会用
Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码解析Spring 源代码...
Spring源码深度解析第二版
Spring配置Freemarker视图解析器,配置多个视图解析器
Spring源代码解析(七):Spring AOP中对拦截器调用的实现 Spring源代码解析(八):Spring驱动Hibernate的实现 Spring源代码解析(九):Spring Acegi框架鉴权的实现 Spring源代码解析(十):Spring Acegi框架授权...
Spring源代码解析7:Spring AOP中对拦截器调用的实现 .doc Spring源代码解析8:Spring驱动Hibernate的实现.doc Spring源代码解析9:Spring Acegi框架鉴权的实现.doc Spring源代码解析10:Spring Acegi框架授权的实现...
Spring MVC--5.视图和视图解析器
Spring源码解析
主要介绍了Spring自定义参数解析器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
NULL 博文链接:https://wulinhaoxia5.iteye.com/blog/1567999
Spring源代码解析(一):IOC容器.doc
spring源码解析。使用xmind进行代码整理。包含ioc,aop,tr相关代码部分。
Spring核心源码解析.pdf
spring注解方式解析 1.ioc自动装配 2.注入解析
Spring源代码解析(七):Spring AOP中对拦截器调用的实现 8. Spring源代码解析(八):Spring驱动Hibernate的实现 9.Spring源代码解析(九):Spring Acegi框架鉴权的实现 10. Spring源代码解析(十):Spring ...
spring拦截器,高级参数绑定,controller返回值
Spring源代码解析(七):Spring AOP中对拦截器调用的实现 Spring源代码解析(八):Spring驱动Hibernate的实现 Spring源代码解析(九):Spring Acegi框架鉴权的实现 Spring源代码解析(十):Spring Acegi框架授权...