您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關使用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項目進行整合有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。