SpringBoot自定义参数注解
2015-08-27 16:33
477 查看
json类型参数解析出json对象(like:127.0.0.1:80/test/jsontest={name = testname& email = test@linecorp.com &part = test part})
首先定义注解 JsonSolver.java
1.用@Target(ElementType.PARAMETER)描述这个注解是对参数的注解,在解析参数时使用
2.用@Retention(RetentionPolicy.RUNTIME)描述这个注解要保存到运行时,并不是编译用的注解
实现HandlerMethodArgumentResolver 接口
4000
然后让spring boot识别resolver
controller中@RequestMapping(“test”)
首先定义注解 JsonSolver.java
1.用@Target(ElementType.PARAMETER)描述这个注解是对参数的注解,在解析参数时使用
2.用@Retention(RetentionPolicy.RUNTIME)描述这个注解要保存到运行时,并不是编译用的注解
@interface JsonSolver{ String getName() default "jsontest"; }
实现HandlerMethodArgumentResolver 接口
public class JsonArgumentResolver implements HandlerMethodArgumentResolver { @Override public boolean supportsParameter(MethodParameter parameter) {//有必要复写的检测方法 return parameter.getParameterAnnotation(JsonSolver.class) != null; } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {//有必要复写的解析方法 HttpServletRequest request = webRequest .getNativeRequest(HttpServletRequest.class); BufferedReader reader = request.getReader();//从http request 中读取请求字段 StringBuilder sb = new StringBuilder(); char[] buf = new char[1024];//请求最长1024 int rd; while ((rd = reader.read(buf)) != -1) { sb.append(buf, 0, rd); } //char[]->String 利用String中split(),indexof(),substring()等函数将请求字段解析成map<String,String>name:testname; email:test@linecorp.com;part:test part解析出来 jsontest = new Jsontest();//并将map中的数据存入对象 return "jsontest"; } }
4000
然后让spring boot识别resolver
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(new JsonArgumentResolver()); } }
controller中@RequestMapping(“test”)
String testss(@JsonSolver(getName = "jsontest") Jsontest j){ model.addAttribute("json",j); return "jsonshow"; }
相关文章推荐
- Spring事务配置的五种方式
- java程序模拟QQ空间登录 - 并模拟刷说说的赞
- leetcode--LinkedListCycleII
- Spring和MyBatis环境整合
- ANT构建JAVA WEB工程
- [分布式java]基于JavaAPI实现消息方式的系统间通信:UDP/IP+BIO
- Spring4 多种定时器详解
- 【java】国际化
- 自定义Spring动态代理类型
- Mac 终端命令运行java程序
- Java用邻接矩阵实现图并进行深度优先搜索
- java动态代理--cglib
- JVM内存管理:深入Java内存区域与OOM
- JAVA array,map 转 json 字符串
- Selenium 出现: Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
- Selenium 出现: Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
- JAVA模板 大整数模板 高精度
- Ehcache 分布式缓存 -springMVC
- JAVA并发编程8_线程池的使用
- 【java】定时器 Timer和TimerTask类