使用Listener准备application作用域数据
生活随笔
收集整理的這篇文章主要介紹了
使用Listener准备application作用域数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在程序中。有些數據我們希望在程序啟動的時候就準備好,而且僅僅準備一次,放在application作用域中,這時候。我們一般會用Listener來準備這些數據。該Listener配置在web.xml里,默認通過反射生成實例,來得到這個對象實例來運行?? ?并沒有從Spring容器里面獲取,Tomcat沒有找Spring容器,所以此處無法使用注解?? ? 假設使用注解,會生成兩個對象,一個Tomcat產生的對象,一個Spring容器注入的對象?? ?Tomcat會使用自己產生的對象,而Spring管理的對象沒人使用?
可是,用Listener準備application作用域的數據。在獲取容器的時候會有一些注意事項。
public class InitListener implements ServletContextListener {public void contextInitialized(ServletContextEvent sce) {// 獲取容器與相關的Service對象ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext());PrivilegeService privilegeService = (PrivilegeService) ac.getBean("privilegeServiceImpl");// 準備數據:topPrivilegeListList<Privilege> topPrivilegeList = privilegeService.findTopList();sce.getServletContext().setAttribute("topPrivilegeList", topPrivilegeList);System.out.println("------------> 已準備數據 <------------");// 準備數據:allPrivilegeUrlsCollection<String> allPrivilegeUrls = privilegeService.getAllPrivilegeUrls();sce.getServletContext().setAttribute("allPrivilegeUrls", allPrivilegeUrls);System.out.println("------------> 已準備數據allPrivilegeUrls <------------");}public void contextDestroyed(ServletContextEvent arg0) {}總結
以上是生活随笔為你收集整理的使用Listener准备application作用域数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows环境下手动更新boot2d
- 下一篇: 恋上程序猿