日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

在java web项目中实现随项目启动的额外操作

發(fā)布時(shí)間:2024/9/5 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在java web项目中实现随项目启动的额外操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

  在web項(xiàng)目中經(jīng)常會(huì)遇到在項(xiàng)目啟動(dòng)初始,會(huì)要求做一些邏輯的實(shí)現(xiàn),比如實(shí)現(xiàn)一個(gè)消息推送服務(wù),實(shí)現(xiàn)不同類型數(shù)據(jù)同步的回調(diào)操作初始化,或則通知其他客戶服務(wù)器本項(xiàng)目即將啟動(dòng),等等。對(duì)于這種要求,目前個(gè)人了解到的方式只要有三種。

  • 通過(guò)新加一個(gè)Servlet。然后在web.xml注冊(cè)該Servlet,通過(guò)該servlet的init()來(lái)實(shí)現(xiàn)處理邏輯。
  • <servlet><servlet-name>servlet_test</servlet-name><servlet-class>com.guozg.test.service.ServletTest</servlet-class><load-on-startup>5</load-on-startup></servlet><servlet-mapping><servlet-name>servlet_test</servlet-name><url-pattern>/servletTest</url-pattern></servlet-mapping>

     

    class ServletTest extends HttpServlet{@Overridepublic void init() throws ServletException {//do something; } }

      2.? 添加web服務(wù)器的監(jiān)聽ServletContextListener來(lái)實(shí)現(xiàn),需要實(shí)現(xiàn)

    class ServletListenerTest implements ServletContextListener{@Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {//do something when system start }@Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {//do something while the system crash } } <listener><listener-class>com.guozg.test.service.ServletListenerTest</listener-class> </listener>

    ?

      3.? 通過(guò)Spring的監(jiān)聽事件,注冊(cè)一個(gè)Spring初始化容器時(shí)的監(jiān)聽,實(shí)現(xiàn)ApplicationListener<ContextRefreshedEvent>接口,并實(shí)現(xiàn)onApplicationEvent()方法。

    /*** @auther guozg*/ @Service public class FolderUpdataLister implements ApplicationListener<ContextRefreshedEvent> {@Overridepublic void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {//do something}

      在spring的監(jiān)聽中,如果用到springmvc,由于父子容器的原因,會(huì)兩次調(diào)用初始化容器事件,使用時(shí)要注意考慮。但是優(yōu)點(diǎn)是此時(shí)可以使用spring的注入調(diào)用其他service。前面兩種與web服務(wù)器有關(guān)的,在實(shí)際運(yùn)用中可能會(huì)使用不成功,就是在web.xml中找不到目標(biāo)類,也即是web.xml的包中沒(méi)有引入目標(biāo)類的包。當(dāng)出現(xiàn)這種情況就可以選用第三種了。還有一種方式是在web服務(wù)器中再加一個(gè)Filter。好了,目前知道的就是這些,具體使用看情況而定。另外為了不占用web 服務(wù)器啟動(dòng)的資源和時(shí)間,可以考慮新起線程來(lái)做操作。

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/guozhigang/p/9855009.html

    總結(jié)

    以上是生活随笔為你收集整理的在java web项目中实现随项目启动的额外操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。