【发布时间】:2015-04-17 16:07:14
【问题描述】:
我对控制器对象有点困惑。据我所知,控制器默认是单例的。如果线程 1 执行到第 9 行并将 empId 设为 12,线程 2 从线程 1 获得控制权并将 empId 设为 23 并完成整个方法的执行,然后再次执行线程 1,则单例如何适用于 Web 应用程序,如下面的代码执行 empId 的值是 12 还是 23。
而且我还注意到,只为 UserServiceDao 类创建了一个对象,因此如何在 spring mvc 中管理线程,每个线程都有自己的实例。
1 public class ActionController {
2
3 @Autowired
4 UserServiceDao userServiceDao;
5
int count = 1;
6
7 @RequestMapping("/dashboard.htm")
8 public ModelAndView dashboard(HttpServletRequest request) {
9 String empId = request.getParameter("empId");
10 UserProfile userProfile = userServiceDao.loadEmpById(empId);
System.out.println(count);
count++;
11 }
12 }
Thread first output: 1;
Thread second output : 2;
谢谢。
【问题讨论】:
标签: java spring spring-mvc