今天就跟大家聊聊有关使用Spring怎么对Web项目进行整合,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一 概述
1.整合目的
将所有对象的创建与管理任务交给Spring容器,降低程序的耦合度。
2.整合途径
将Spring容器注入到Web容器中。
3.具体实现
使用ServletContextListener监听ServletContext,当ServletContexxt创建时同时创建Spring容器,并将创建完成的容器放到ServletContext即application中,在Web中获取Spring容器,就可以访问对象了。ContextLoadListener是ServletContextListener的一个实现类,配置:
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
默认情况下,Spring的配置文件只能放在WEB-INF目录下,名称为applicationContext.xml,可以在web.xml文件中修改,将配置文件放在src目录下:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:xxxx.xml</param-value></context>
4.获取Spring容器
WebApplicationContext context=WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
二 延时加载问题
1.原因
视图层调用Service的方法从数据库中加载对象,如果Dao实现层采用了延时加载,返回一个包含null对象的代理,在视图层访问对象的详情时,Service层已经执行完毕,事务已关闭,对象为空,就无法获取对象的详情。
2.解决方法
将Session与请求线程绑定,允许在事务关闭以后完成延时加载任务。
3.具体实现
在web.xml中配置:
<filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping> <filter-name>opernSessionInViewFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
看完上述内容,你们对使用Spring怎么对Web项目进行整合有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。