spring容器加载完成执行某个方法
来源:互联网 发布:linux尝试其他镜像 编辑:程序博客网 时间:2024/05/29 01:51
http://www.mincoder.com/article/1812.shtml
今天遇到一个问题,需要在项目中加入一个定时器,需要在项目启动后就执行,所以就在网上找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> <servlet-name>myServlet</servlet-name> <servlet-class>com.servlet.MyServlet</servlet-class> <load-on-startup>1</load-on-startup><!--加这个标签,tomcat启动时会自动加载指定的servlet,值是servlet的加载顺序, 数字越小代表加载的优先级越高--> </servlet>
0 0
- spring容器加载完成执行某个方法
- spring容器加载完成执行某个方法
- spring容器加载完成执行某个方法
- spring容器加载完成执行某个方法
- 当spring 容器初始化完成后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- spring 容器初始化完成后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- 最佳实践--Spring容器初始化完成之后执行某个方法
- 当spring 容器初始化完成后执行某个方法
- Cocos2d-x3.3Final(7)Focus常用成员函数(C++)
- 乐观锁和悲观锁
- jQuery插件FullCalendar日程表实现可扩展Google日历功能
- Eclipse设置自动换行
- 1082. Read Number in Chinese (25)
- spring容器加载完成执行某个方法
- MVC趋势发展精简之VC
- 关于百度地图在web端二次开发经验分享
- MySQL AB复制&mysql-proxy读写分离
- 内核编译图文教程,概述篇
- 小波变换和motion信号处理(二)
- extern详解
- XCode开发遇到的“Could not inspect the application package”解决方案
- 很实用的C++ ini解析类