當前位置:
首頁 > 知識 > 隨web應用啟動而自啟動的後台線程

隨web應用啟動而自啟動的後台線程

當前遇到一個需求:

需要在web應用啟動的時候就啟動一個線程定時的來做某項工作。

有兩種解決方法:

1.增加一個監聽器Listener來實現相關功能。

2.增加一個隨項目啟動的servlet來實現相關功能。

這裡Listener和隨項目啟動的servlet都可以隨著項目啟動而啟動,只是啟動的時序有所不同:

隨web應用啟動而自啟動的後台線程

接下來分別實現下:

1.Listener實現:看代碼

隨web應用啟動而自啟動的後台線程

View Code

然後需要將Listener配置到web.xml中:

隨web應用啟動而自啟動的後台線程

<listener>

<listener-class>com.web.cloudAgent.servlet.LoadBalanceServlet</listener-class>

</listener>

2.servlet實現:

隨web應用啟動而自啟動的後台線程

View Code

然後需要配置到web.xml中:

隨web應用啟動而自啟動的後台線程

題外話:我遇倒的一些意外情況,在servlet中需要調用一些service,service中包含一些dao,在起初測試的時候發現service會抱錯NullException,後來看到網友的一句話:

因為你的servlet不是由spring管理的,所以spring就不能往servlet里注入對象,而你的action是spring管理的,所以可以注入成功。

所以最終我們通過spring 的上下文來獲取相應的service。具體方法如下:

//獲取當前上下文環境,spring容器

WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();

RegularTaskService regularTaskService = (RegularTaskService)wac.getBean("regularTaskService");

經測試,可以使用。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

SQL 中 on 條件與 where 條件的區別
Python3 的這幾個特性

TAG:程序員小新人學習 |