spring容器載入完成執行某個方法,spring容器載入執行

來源:互聯網
上載者:User

spring容器載入完成執行某個方法,spring容器載入執行

今天遇到一個問題,需要在項目中加入一個定時器,需要在項目啟動後就執行,所以就在網上找spring容器初始化之後就執行的方法有什麼:

查了很多資料,總共找到了兩個合格方法,都是用了一下之後,結合網上的資訊說說我個人的理解:

1.寫一個類,實現BeanPostProcessor,這個介面有兩個方法:

(1)postProcessBeforeInitialization方法,在spring中定義的bean初始化前調用這個方法;

(2)postProcessAfterInitialization方法,在spring中定義的bean初始化後調用這個方法;

首先,開始我試過這個方法,才發現,這個介面是在spring容器啟動時,每初始化一個bean,便會調用一次,也就是說,你初始化多少個bean,變回調用多少次,當然也就不符合我之前的需求;

2.之後,我找到了另外一個方法,寫一個類,實現InitializingBean介面:

(1)實現這個介面,只要實現afterPropertiesSet()這個方法,將你要預先處理的代碼寫在裡面,spring容器啟動後,就會執行這個裡面的方法。


很明顯,最後一個符合我的需求,我將計時器代碼寫在實現InitializingBean介面的類中afterPropertiesSet()方法裡面。

public class DayTradeTimer implements InitializingBean{/** *  */private static final long serialVersionUID = -5173826987102711830L;@SuppressWarnings("deprecation")public void afterPropertiesSet() throws Exception {// TODO Auto-generated method stubDate date = new Date();//每天淩晨兩點執行if((date.getHours()==2 && date.getMinutes()>0) || (date.getHours()>2)){date.setDate(date.getDate()+1);}date.setHours(2);date.setMinutes(0);date.setSeconds(0);Timer timer = new Timer();timer.scheduleAtFixedRate(new TimerTask() {@Overridepublic void run() {// TODO Auto-generated method stubSystem.out.println("***********計時器*****************");}}, date, 1000*60*60*24);}}


最後,再貼一個servlet在web容器啟動時執行的方法

<servlet>     <servlet-name>myServlet</servlet-name>     <servlet-class>com.servlet.MyServlet</servlet-class>     <load-on-startup>1</load-on-startup><!--加這個標籤,tomcat啟動時會自動載入指定的servlet,值是servlet的載入順序, 數字越小代表載入的優先順序越高--> </servlet> 




spring再tomcat啟動後,初始化完成後,自動執行一次某個類,怎做

用spring 的quartz
 
怎判斷Spring容器初始化完成?

應該沒問題吧。
@Qualifier("C") ?
確定C的名字正確嗎

如果名字唯一,可以把@Qualifier("C")去掉試試
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.