Annotations for Http params:
@RequestBody
@PathVariable
@RequestParam
@ModelAttribute
@ExceptionHandler & @ControllerAdvice(这个advice注解是在 spring 3.2 之后才有的) 及基于它们两个的 Spring MVC 异常处理:
问题: spring MVC 在 json 反序列化(如通过 @RequestBody 反序列化一个 enum)出错时,只返回 400,后台无任何 log!导致错误的排查比较困难。
。。。
http://stackoverflow.com/questions/6175600/spring-mvc-request-body-error-handling
解决:
。。。
http://www.mkyong.com/spring-mvc/spring-mvc-exceptionhandler-example/
http://www.javacodegeeks.com/2013/06/spring-mvc-error-handling-flow.html
Validation:
http://jinnianshilongnian.iteye.com/blog/1733708
Spring MVC 的 单元测试:
1 使用 MockHttpServletRequest & MockHttpServletResponse 等:
http://stackoverflow.com/questions/1401128/how-to-unit-test-a-spring-mvc-controller-using-pathvariable
JSON REST请求的话,参照下面链接设置MappingJacksonHttpMessageConverter:
http://stackoverflow.com/questions/9138555/spring-framework-test-restful-web-service-controller-offline-i-e-no-server-n
需要注意的是,这种方式无法对Controller的@Valid做验证。
2 如果 Spring 版本为 3.1+,可以考虑使用spring-test-mvc,使用它做spring mvc的单元测试,Controller的@Valid可以很好的被验证到:
http://stackoverflow.com/questions/12308213/how-do-i-get-spring-mvc-to-invoke-validation-in-a-junit-test
引入spring-test-mvc的maven依赖后,测试很简单,如下:
EmailRest controller = applicationContext.getBean(EmailRest.class);
MockMvc myMockController = MockMvcBuilders.standaloneSetup(controller).build();
DefaultRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/send").contentType(MediaType.APPLICATION_JSON)
.body("{\"email\":\"xxx@yyy.com\",\"subject\":\"您有新的好友请求,请登陆处理\",\"tag\":\"contactrequest\",\"content\":\"1234567890\"}".getBytes());
ResultActions ra = myMockController.perform(requestBuilder);
3 使用 spring 的 restTemplate
分享到:
相关推荐
包括Spring MVC、Spring Data Access、Spring Integration以及Spring测试框架的核心源码原理,都可以帮助开发者理解Spring如何工作,以及如何优化和扩展其功能。 总的来说,Spring框架的历史和未来展望展示了一个...
### Spring XML配置十二个最佳实践 #### 一、利用自动装配简化配置 在Spring框架中,自动装配(Autowiring)是一种非常实用的功能,它能够帮助我们减少对Bean依赖关系的手动配置工作量。......(未完待续)
本程序是struts spring hibernate的完整环境配置, 包括: struts1.3 spring 2.0 hibernate 3.1 的所有完整的包。 BeanNameAutoProxyCreator事务处理 中文乱码解决 MD5程序加密 AJAX验证码等 ...
本文档将详细介绍并对比六种主流Java Web框架:JSF、Spring MVC、Stripes、Struts2、Tapestry以及Wicket。 #### 议程概览 - **介绍** - **优缺点分析** - **适用场景** - **框架间的比较** - **结论** - **问答环节...
【“未完工程”转让的税务筹划】 在房地产开发中,有时企业会遇到资金困难,导致项目无法继续,这时“未完工程”的处理就需要精心的税务筹划,以降低税务负担并最大化收益。以下是对“未完工程”转让的四种可能方案...
扫雷游戏 未完 大家一起完成 扫雷游戏 未完 大家一起完成
未完工程及遗留问题清单(表格模板、XLS格式).XLS
探索 ES6(未完)
9--[小黑点的旅行(未完待续)].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码9--[小黑点的旅行(未完待续)].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码9--[小黑点的旅行(未完待续)].zip...
工程介绍:SpringBoot项目脚手架,利用spring aop+java反射实现自定义注解校验参数 源码里有使用都例子在DemoContorller example1:校验userName参数必填 @CheckParams(notNull = true) private String userName;...
银行柜台排队模拟,未完
未完待续... nacos注册中心 demo项目 nacos-service-provider(提供服务项目) nacos-service-consumer(调用服务项目) 网关(用到sentinel + nacos) 步骤 启动nacos服务,参考网址: 个人账号:nacos密码:...
未完项目纠偏措施表.docx
"android播放器未完待续"这个标题暗示我们将探讨如何在Android系统中构建一个功能完善的音乐播放器,以及可能遇到的问题和解决方案。让我们深入研究一下。 首先,Android音乐播放器的基础是媒体库服务。Android提供...
爬虫实战未完之国考报名数据爬取
【标题】: "参考资料-J110(未完工程项目明细表).zip" 提供的是一份关于未完成工程项目详细情况的文档集合。这个压缩包很可能是为了项目管理、工程审计或者进度跟踪而准备的,它包含了一份重要的文档——"J110...
pl-sql练习(未完).txt
【标题】:“个人手机网游作品展示,未完待续” 这个标题揭示了这是一个关于个人制作的手机网络游戏的展示,暗示作者可能是一名独立游戏开发者,或者是对游戏开发有浓厚兴趣的爱好者。"未完待续"则表明这项作品还在...