1. 程式人生 > >各種獲取context(ServletContext VS ApplicationContext)

各種獲取context(ServletContext VS ApplicationContext)

為這麼突然會想到獲取context呢,主要是最近在做一個需求實現時,需要在伺服器端弄一個定時器去定時檢測客戶端是否正常工作。客戶端會定時發請求告訴伺服器端“我很正常” 如果在規定的時間內不能收到客戶端的請求,那麼就得修改客戶端在資料庫中相應的狀態,需要的兩個東西就是客戶端id和最近一次請求時間,起將其以map存放到context中(伴隨伺服器終身)但是我的定時器是使用的是spring的<!--定時器部分--><task:executor id="executor" pool-size="5"/><task:scheduler id="scheduler" pool-size="10"/><task:annotation-driven executor="executor" scheduler="scheduler"/>                    往定時器中傳遞引數比較麻煩,索性就交給context了

通常在spring專案中獲取servletContext有以下方式 1、request獲取servletContext

ServletContext servletContext 
= request.getServletContext();
  • 1

2、使用ContextLoader

ServletContext servletContext = ContextLoader.getCurrentWebApplicationContext().getServletContext();
  • 1

3、使用spring注入自動注入

@Autowiredprivate ServletContext servletContext;前兩種就不說了,關鍵是第三種,這個context物件會在spring容器啟動時就會被示例化,第二種就可能出現空指標