项目启动后开启定时任务方法-->InitializingBean
来源:互联网 发布:黑客在淘宝上的暗语 编辑:程序博客网 时间:2024/05/16 08:21
通过springframework自带的InitializingBean同样可以达到项目启动后开启定时任务效果,具体实现如下。
1.写一个继承InitializingBean接口的类
import java.util.Calendar;import java.util.Date;import java.util.Timer;import javax.annotation.Resource;import org.springframework.beans.factory.InitializingBean;import org.springframework.stereotype.Service;import com.xxx.service.XxxService;import com.xxx.util.StringUtil;@Servicepublic class TaskListener implements InitializingBean {@Resource(name = "xxxService")private XxxService service;@Overridepublic void afterPropertiesSet() throws Exception {Calendar date = Calendar.getInstance();//设置时间为 xx-xx-xx 00:00:00 date.set(date.get(Calendar.YEAR), date.get(Calendar.MONTH), date.get(Calendar.DATE), 14, 52, 0); //如果第一次执行定时任务的时间 小于当前的时间 //此时要在 第一次执行定时任务的时间加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。 if (date.before(new Date())) { date.set(date.get(Calendar.YEAR), date.get(Calendar.MONTH), date.get(Calendar.DATE) + 1, 14, 52, 0); } StringUtil.date2String(date.getTime(), "yyyy-MM-dd HH:mm:ss"); Timer timer = new Timer();XxxTask task = new Xxxask(service);timer.scheduleAtFixedRate(task, date.getTime(), 24 * 60 * 60 * 1000);}}2.在配置文件中配置该类
<bean class="com.xxx.task.TaskListener" />这样就行了。
原理:
Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,常用的设定方式有以下三种:
1)通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法;
2)通过 元素的 init-method/destroy-method属性指定初始化之后 /销毁之前调用的操作方法;
3)在指定方法上加上@PostConstruct 或@PreDestroy注解来制定该方法是在初始化之后还是销毁之前调用。
结论:Bean在实例化的过程中
Constructor > @PostConstruct > InitializingBean > init-method
0 0
- 项目启动后开启定时任务方法-->InitializingBean
- 项目启动后开启定时任务方法-->InitializingBean和ServletContextListener比较
- 项目启动后开启定时任务方法-->ServletContextListener
- 项目启动后开启定时任务方法-->TimerTask中如何调用service
- 项目启动定时任务
- Springmvc项目启动后定时执行某个方法
- Spring MVC项目启动时在容器加载完毕后插入一个定时任务
- 开启spring task定时任务后,抛出以下异常
- javaweb项目启动定时任务的实现
- 多线程开启定时任务
- Tomcat启动完毕后启动方法任务
- Tomcat启动完毕后启动方法任务
- web项目简单的项目启动时执行定时任务
- Java Web应用启动后执行定时任务-ScheduledThreadPoolExecutor
- Mysql定时任务的开启
- Java开启定时任务线程
- MySQL定时任务的开启
- springboot开启定时任务教程
- Redis 发布订阅 命令
- opencv 学习笔记--图像的基本操作(一)
- Rest API 的那些事儿
- redis内存优化
- 漫谈数据仓库之维度建模
- 项目启动后开启定时任务方法-->InitializingBean
- Hdu 4824 Disk Schedule【TSP-Dp】
- 512M内存 MYSQL的my.cnf
- 一个统计字数的程序
- Remove Duplicates from Sorted List
- MFC中STL容器中Vector,List,Map基本用法汇总
- [ActiveDataProvider] -- yii2的GridView和ActiveDataProvider具体使用
- 80老翁谈人生(325):《网络安全法》的重大意义
- C#开源框架