Spring加载延迟解决方案

来源:互联网 发布:unity3d easyar 编辑:程序博客网 时间:2024/06/08 11:52

Spring延迟加载

Spring中的bean都是默认延迟加载的,当处于事务管理时,由于事务管理在service层,开启事务及关闭事务都在service层,而web层要获取数据就没有了,所以会报一个no session的错误,也就是延迟加载的问题.

解决 no session的问题:    1.不采用延迟加载    2.手动加载初始化 Hibernate.initialize(延迟对象)    3.使用spring提供的一个OpenSessionInViewFilter来解决基本的原理就是将session的关闭操作不在service层完成,而是在web层才关闭session.注意:openSessionInViewFilter一定要在Struts2的核心配置(拦截器)前进行配置.<!-- OpenSessionInViewFilter解决延迟加载问题 --><filter>    <filter-name>openSessionInView</filter-name>    <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping>    <filter-name>openSessionInView</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>
原创粉丝点击