这是在别处看到关于spring mvc里的一段话。
我以前一直都是用struts2来实现mvc的,spring用listener来整合整个系统,在service层里访问dao来实现事务逻辑和数据库事务,从来也没意识到有个所谓的父子上下文,而且父上下文还不能对子上下文的数据进行访问的问题,按这个文章的说法,service这些难道不是在子上下文里,既然父上下文不能对子上下文完成事务,为什么我在service层里进行hibernatetemple的操作都成功了?完全无法理解这个说法
我以前一直都是用struts2来实现mvc的,spring用listener来整合整个系统,在service层里访问dao来实现事务逻辑和数据库事务,从来也没意识到有个所谓的父子上下文,而且父上下文还不能对子上下文的数据进行访问的问题,按这个文章的说法,service这些难道不是在子上下文里,既然父上下文不能对子上下文完成事务,为什么我在service层里进行hibernatetemple的操作都成功了?完全无法理解这个说法
可以使用Spring提供的工具类取出上下文对象:WebApplicationContextUtils.getWebApplicationContext(ServletContext);
DispatcherServlet是一个Servlet,可以同时配置多个,每个 DispatcherServlet有一个自己的上下文对象(WebApplicationContext),称为子上下文(子容器),子上下文可以访问父上下文中的内容,但父上下文不能访问子上下文中的内容。 它也保存在 ServletContext中,key是"org.springframework.web.servlet.FrameworkServlet.CONTEXT"+Servlet名称。当一个Request对象产生时,会把这个子上下文对象(WebApplicationContext)保存在Request对象中,key是DispatcherServlet.class.getName() + ".CONTEXT"。
可以使用工具类取出上下文对象:RequestContextUtils.getWebApplicationContext(request);