web項目啟動執行方法
阿新 • • 發佈:2018-06-09
ets 創建 web web項目 contex web服務器 sce 執行 ring
近期在項目中需要將用戶在web啟動時就查詢出來,當作緩存使用。
一、首先需要實現 ServletContextListener 接口
1 public class UserCacheUtils implements ServletContextListener { 2 3 /** 4 * web服務器啟動時執行 5 */ 6 @Override 7 public void contextInitialized(ServletContextEvent sce) { 8 System.out.println("啟動"); 9} 10 11 12 13 /** 14 * 消亡時執行 15 */ 16 @Override 17 public void contextDestroyed(ServletContextEvent sce) { 18 System.out.println("關閉"); 19 } 20 21 }
ServletContextListener 接口中有2個方法 contextInitialized 方法在web容器創建時執行,而 contextDestroyed 是在容器銷毀時執行,所以我們可以將我們需要執行的代碼加入到上述2個方法中。
二、Web.xml 配置監聽
我們要想執行上述代碼就必須在Web.xml中配置監聽去監聽這個類。
1 <!-- 配置用戶緩存監聽路徑 --> 2 <listener> 3 <listener-class>com.dffk.audsys.common.util.UserCacheUtils</listener-class> 4 </listener>
這裏要配置自己的類。
三、Bean 註入
在這個類中,我們是不可以通過 @Autowired 獲取到需要註入的 Bean ,這裏我們需要使用 spring 進行對象註入。
1 public class UserCacheUtils implements ServletContextListener { 2 3 //獲取spring註入的bean對象 4 private WebApplicationContext springContext; 5 6 @Autowired 7 private SysUserMapper sysUserMapper; 8 9 /** 10 * 存放所有人員信息,key為username 11 */ 12 public static Map<String, SysUser> userMap; 13 /** 14 * web服務器啟動時執行 15 */ 16 @Override 17 public void contextInitialized(ServletContextEvent sce) { 18 springContext = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); 19 if(springContext != null){ 20 sysUserMapper = (SysUserMapper)springContext.getBean("sysUserMapper"); 21 }else{ 22 System.out.println("獲取應用程序上下文失敗!"); 23 return; 24 } 25 System.out.println("啟動"); 26 getUsers(); 27 } 28 29 /** 30 * 緩存人員信息 31 */ 32 public void getUsers () { 33 List<SysUser> users = sysUserMapper.findAllUsers(); 34 users.stream().forEach((e) -> { 35 userMap.put(e.getUserName(), e); 36 }); 37 userMap.keySet().stream().forEach(System.out :: println); 38 } 39 40 41 /** 42 * 消亡時執行 43 */ 44 @Override 45 public void contextDestroyed(ServletContextEvent sce) { 46 System.out.println("關閉"); 47 } 48 49 }
以上在 contextInitialized 方法中首先去初始化 需要註入的 bean,然後再去執行自己的方法。我的方法主要是為了將人員信息緩存下來。
web項目啟動執行方法