随笔分类 - Spring
Spring的AsyncHandlerInterceptor
摘要:AsyncHandlerInterceptor提供了一个afterConcurrentHandlingStarted()方法, 这个方法会在Controller方法异步执行时开始执行, 而Interceptor的postHandle方法则是需要等到Controller的异步执行完才能执行例如 @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Except...
阅读全文
Spring MVC 返回类型为字符串时, 返回中文变成"?"处理
摘要:Spring controller 如下@Controllerpublic class SimpleController { @ResponseBody @RequestMapping(value = "/hotel") public String hotel() { return "{\"status\":0,\"errmsg\":null,\"data\":{\"query\":\"酒店查询\",\"num\":65544,\"ur
阅读全文
Spring Test, JUnit, Mockito, Hamcrest 集成 Web 测试
摘要:关于Spring 3.21. Spring 3.2 及以上版本自动开启检测URL后缀,设置Response content-type功能, 如果不手动关闭这个功能,当url后缀与accept头不一致时, Response的content-type将会和request的accept不一致,导致报406关闭URL后缀检测的方法如下 2. Spring-Test框架无法应用关闭Spring自动URL后缀检测的设置, 且StandaloneMockMvcBuilder将设置favorPathExtendsion属性的方法设置为protected即 ...
阅读全文
Unit Testing of Spring MVC Controllers: “Normal” Controllers
摘要:Original link:http://www.petrikainulainen.net/programming/spring-framework/unit-testing-of-spring-mvc-controllers-normal-controllers/Unit Testing of Spring MVC Controllers: “Normal” ControllersbyPETRI KAINULAINENonJULY 7, 2013The first part of this tutorial described how we canconfigure our unit tes
阅读全文
Unit Testing of Spring MVC Controllers: Configuration
摘要:Original Link:http://www.petrikainulainen.net/programming/spring-framework/unit-testing-of-spring-mvc-controllers-configuration/Unit Testing of Spring MVC Controllers: ConfigurationbyPETRI KAINULAINENonJUNE 28, 2013Writing unit tests for Spring MVC controllers has traditionally been both simple and
阅读全文
DAO,Service接口与实现类设计
摘要:DAO接口为每个DAO声明接口的好处在于1. 可以在尚未实现具体DAO的时候编写上层代码,如Service里对DAO的调用2. 可以为DAO进行多实现,例如有JDBCDAO实现,MyBatisDAO实现,而不需要更改上层代码,只需要简单的在Spring的IoC配置里修改一下注入的DAO实现Service接口1. 可以在尚未实现具体Service情况下编写上层改代码,如Controller对Service的调用2. Spring无论是AOP还是事务管理的实现都是基于动态代理的,而动态代理的实现依赖于接口,所以必须有接口的定义才能使用这些功能3. 可以对Service进行多实现总的来说,接口的优势
阅读全文
Spring Security
摘要:Spirng Security主要涵盖的方面有1. 登录验证管理,包括登录成功后保存用户信息到Session2. URL级别和Controller方法级别的访问控制3. 对于访问控制采取的授权管理方法,包括用户授权和用户组授权下面是例子security-config.xml (权限验证失败回到登录页面) (权限验证失败弹框) (提供登出链接) --> --> ...
阅读全文
Spring Validation
摘要:Spring Validation模块用于表单数据验证配置,示例如下依赖Jar包 javax.validation validation-api org.hibernate hibernate-validator Controller方法 /** * 添加酒店 * @param hotel * @param bindingResult * @return */ @RequestMapping(v...
阅读全文
Spring REST
摘要:示例实现1. 请求REST接口返回类转换的JSON或XML数据2. POST JSON数据到REST接口自动转为类数据服务端Beanpackage com.qunar.bean;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlRootElement;/** * Created with IntelliJ IDEA. * User: zhenwei.liu * Date: 13-7-
阅读全文
Spring 远程服务
摘要:稍微看了一下Spring的远程服务章节,讲到了RMI,Hessian,Burlap,Http invoker以及JAX-WS1.RMI原理:1)在Spring服务端使用RmiServiceExporter将一个Spring bean包装在RMI的适配器里,并将这个适配器注册到服务端的RMI服务的ip和端口上,注册RMI服务2)在客户端则使用一个代理工厂生成一个代理对象负责与远程的RMI服务进行通信,这个代理对象当做本地pojo这样使用缺点:1)由于使用任意端口交互,难以穿越防火墙2)RMI基于Java,它使用了Java的序列化机制,因此服务端和客户端之间传输的对象必须保证是相同版本2.Hess
阅读全文
Spring 事务管理
摘要:1.事务管理器的声明 2. 编码式事务管理 /** * 编码型事务测试 */ public void killUser(final int userId) { txTemplate.execute(new TransactionCallback() { @Override public Object doInTransaction(TransactionStatus transactionStatus) { ...
阅读全文
Spring AOP
摘要:Spring AOP 可以使用XML 配置方式和注解方式而AOP的类型有如下三种1. 显示声明前置后置AOP方法2. 环绕AOP方法3. 使用接口扩展已知类以下是各种类型示例applicationContext.xml示例 ...
阅读全文
ContextLoaderListener 与 ServletDispatcher
摘要:网上找了一下关于ContextLoaderListener和ServletDispatcher的解释,这是原文http://simone-folino.blogspot.com/2012/05/dispatcherservlet-vs.htmlhttp://syntx.co/languages-frameworks/difference-between-loading-context-via-dispatcherservlet-and-contextloaderlistener/总结如下:Spring中有两种上下文环境-"Application Context和Web Applica
阅读全文
Spring Bean 注入 2 注解篇
摘要:1. 自动装配注解配置applicationContext.xml开启注解 注解使用示例 /** Value 注解可以使用SpEL,对基本数据类型完成注入 */ @Value("#{americanA.getName}") public void setName(String name) { this.name = name; } /** * Autowired表示使用byType自动装配该属性,他除了用在set方法也可以用在其他方法 * required属性表示可以允许找不到匹配的bean,而将该属性置为nul...
阅读全文
Spring Bean 注入 1 - 构造方法注入,属性注入,自动装配
摘要:1.代码结构图xxx2.bean代码package com.xxx.bean;/** * Created with IntelliJ IDEA. * User: zhenwei.liu * Date: 13-7-18 * Time: 上午1:25 * To change this template use File | Settings | File Templates. */public abstract class People { protected String name; protected int age; protected Pet pet; public...
阅读全文
Spring MVC
摘要:1. 流程Spring MVC依靠的是DispatcherServlet,他是一个分发器,在请求过来的时候它负责分发请求给控制器,当控制器请求处理完成后,它负责根据逻辑视图名查找视图呈现结果2.配置DispatcherServletweb.xml中DispatcherServlet的配置 -servlet.xml对应 --> dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocati...
阅读全文