SpringMVC是方法级别的测试
在SpringMVC和Struts2的区别一文中提到,springMVC是方法级别的拦截,这篇文章将已实际案例来测试springMVC是方法级别的拦截。如有理解的不对的地方,欢迎指教。
TestSingleController.java
package com.qxl.framework.web.controller.test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
*
* @author qxl
* @date 2016年12月2日 下午2:56:14
* @version 1.0.0
*/
@Controller
@RequestMapping("/mytest")
public class TestSingleController {
ThreadLocal<String> threadLocal = new ThreadLocal<String>();
@RequestMapping("/test1")
@ResponseBody
public String test1(){
System.out.println("test1--"+threadLocal);
return "test1--"+threadLocal;
}
@RequestMapping("/test2")
@ResponseBody
public String test2(){
System.out.println("test2--"+threadLocal);
return "test2"+threadLocal;
}
}
测试结果:
由截图结果可以看出,controller里面的成员变量只被创建了一次,即controller只示例化了一次,里面的成员变量是共有的,会存在线程安全问题,慎重使用。