Spring Boot和Quartz的整合
来源:互联网 发布:中电经纬数据库 编辑:程序博客网 时间:2024/06/05 04:34
Spring Boot目的是零配置,为了遵从该理念,下面的代码采用的是注解方式。
1、配置quartz
import org.quartz.Trigger;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.quartz.CronTriggerFactoryBean;import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;import org.springframework.scheduling.quartz.SchedulerFactoryBean;/** * 配置quartz * @author * */@Configurationpublic class Quartz { /** * attention: * Details:配置定时任务 */ @Bean(name = "jobDetail") public MethodInvokingJobDetailFactoryBean detailFactoryBean(Schedutask task) {// ScheduleTask为需要执行的任务 MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean(); jobDetail.setConcurrent(false);// 是否并发执行 jobDetail.setName("overTimeNoticeJob");// 设置任务的名字 jobDetail.setGroup("overTimeNoticeJobGroup");// 设置任务的分组,这些属性都可以存储在数据库中,在多任务的时候使用 /* * 为需要执行的实体类对应的对象 */ jobDetail.setTargetObject(task); /* * 添加需要执行的方法 * 通过这几个配置,告诉JobDetailFactoryBean我们需要执行定时执行ScheduleTask类中的需要执行方法 */ jobDetail.setTargetMethod("overTimeNotice"); return jobDetail; } /** * attention: * Details:配置定时任务的触发器,也就是什么时候触发执行定时任务 */ @Bean(name = "jobTrigger") public CronTriggerFactoryBean cronJobTrigger(MethodInvokingJobDetailFactoryBean jobDetail) { CronTriggerFactoryBean tigger = new CronTriggerFactoryBean(); tigger.setJobDetail(jobDetail.getObject()); tigger.setCronExpression("* 0/5 * * * ?");// 初始时的cron表达式 ,没5分钟执行一次 tigger.setName("overTimeNoticeTrigger");// trigger的name return tigger; } /** * attention: * Details:定义quartz调度工厂 */ @Bean(name = "scheduler") public SchedulerFactoryBean schedulerFactory(Trigger cronJobTrigger) { SchedulerFactoryBean bean = new SchedulerFactoryBean(); // 用于quartz集群,QuartzScheduler 启动时更新己存在的Job bean.setOverwriteExistingJobs(true); // 延时启动,应用启动1秒后 bean.setStartupDelay(1); // 注册触发器 bean.setTriggers(cronJobTrigger); return bean; } }
quartz的配置类里面配置了JobDetail的工厂、Trigger的工厂和scheduler的工厂,这样的方式可以解决Job中的spring的注入bean为空的情况。
2、工作类
import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.scheduling.annotation.EnableScheduling;import org.springframework.stereotype.Component;import com.bonc.micro.service.noticetemplate.NoticeTemplateService;import com.bonc.server.service.EmailService;import com.bonc.server.service.ShortMessageService;@Configuration@Component // 此注解必加@EnableScheduling // 此注解必加/** * 超时通知任务 * * @author liyongguan * */public class Schedutask {//@Autowired可以使用spring的bean/** * 发送告警通知 */public void overTimeNotice() {//实际的业务System.out.println("OverTime start time"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));System.out.println("OverTime end time"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}}
知识点来自于:http://blog.csdn.net/liuchuanhong1/article/details/60873295,感谢该博主
阅读全文
0 0
- Spring Boot和Quartz的整合
- spring boot整合quartz
- quartz(二):quartz和spring的整合
- Spring-boot整合Quartz,1、Quartz概念
- spring和quartz整合
- spring 和quartz 整合
- QuartZ和Spring整合
- spring和quartz整合
- quartz和spring整合
- Spring-boot整合Quartz,2、Bean配置
- spring boot和mybatis的整合
- Spring boot和MyBatis的整合
- quartz框架和spring整合
- Quartz整合Spring的练习
- Spring整合Quartz的配置
- Quartz与Spring的整合
- spring 与 Quartz的整合
- Quartz与Spring的整合
- python-PYQT
- mac系统安装maven
- AD官网上获取PCB库
- chromium无法安装扩展解决方案
- Spring MVC(1)
- Spring Boot和Quartz的整合
- 微信小程序图表库
- OpenGL glPixelStore glReadPixels 详解
- 大数据的机遇与挑战
- Python 文件指针(光标)
- 每日掌握一个Linux命令 之 帮助命令 man
- Apache Maven 下载安装环境搭建(1)
- WPF异常捕获,并使程序不崩溃!
- CentOS6.5安装Zookeeper