愿你我共同成长!
今天的定时任务有两种 :
1.Schedudel定时任务器
2.Quartz定时任务
一, Schedudel定时任务器(Scheduled 定时任务器:是 Spring3.0 以后自带的一个定时任务器。,没什么好多说的,直接上代码 )
首先引入依赖
<!-- 添加 Scheduled 坐标 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
写一个定时任务测试用例
/**
*@Component 注解是声明这个类是会什么的作用
*/
@Component
public class ScheduledDemo {
//这里是设置时间,具体怎么设置可以百度,我就不多说了,很简单
@Scheduled(cron="0/2 * * * * ?")
public void ScheduledMethod() {
System.out.println("定时任务!"+new Date());
}
}
写一个启动类
@SpringBootApplication
@EnableScheduling //这个注解是开启定时器的,千万记住
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
现在在启动类里直接启动,其他 什么都不用操作,看结果 (因为时间设置每两秒执行一次,所以结果就是这样了)
2019-02-12 16:14:19.936 INFO 8864 --- [ restartedMain] o.s.j.e.a.AnnotationMBeanExporter : Bean with name 'dataSource' has been autodetected for JMX exposure
2019-02-12 16:14:19.945 INFO 8864 --- [ restartedMain] o.s.j.e.a.AnnotationMBeanExporter : Located MBean 'dataSource': registering with JMX server as MBean [com.alibaba.druid.pool:name=dataSource,type=DruidDataSource]
2019-02-12 16:14:19.965 INFO 8864 --- [ restartedMain] s.a.ScheduledAnnotationBeanPostProcessor : No TaskScheduler/ScheduledExecutorService bean found for scheduled processing
定时任务!Tue Feb 12 16:14:20 CST 2019
2019-02-12 16:14:20.133 INFO 8864 --- [ restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2019-02-12 16:14:20.160 INFO 8864 --- [ restartedMain] com.itstone.App : Started App in 9.668 seconds (JVM running for 10.725)
定时任务!Tue Feb 12 16:14:22 CST 2019
定时任务!Tue Feb 12 16:14:24 CST 2019
定时任务!Tue Feb 12 16:14:26 CST 2019
定时任务!Tue Feb 12 16:14:28 CST 2019
定时任务!Tue Feb 12 16:14:30 CST 2019
定时任务!Tue Feb 12 16:14:32 CST 2019
定时任务!Tue Feb 12 16:14:34 CST 2019
定时任务!Tue Feb 12 16:14:36 CST 2019
定时任务!Tue Feb 12 16:14:38 CST 2019
成功!!!!!
二,Quartz定时任务(这里直接写springboot整合后的定时任务了)
首先添加quartz依赖
<!-- Quartz 坐标 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
写一个自己的job出来
//实现job接口
public class QuartzDemo implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("定时任务哟哟哟哟哟哟" + new Date());
}
}
定时任务配置类(注意各个注解不能少)
@Configuration
public class QuartzConfig {
/**
* 1.创建job对象 做什么事
*/
@Bean
public JobDetailFactoryBean getJobDetailFactoryBean() {
JobDetailFactoryBean factory = new JobDetailFactoryBean();
// 关联自己的job类
factory.setJobClass(QuartzDemo.class);
return factory;
}
/**
* 2.创建trigger对象
*/
@Bean
public SimpleTriggerFactoryBean getSimpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean) {
SimpleTriggerFactoryBean factory = new SimpleTriggerFactoryBean();
// 关联jobdatil对象
factory.setJobDetail(jobDetailFactoryBean.getObject());
// 该参数表示一个执行的毫秒数
factory.setRepeatInterval(2000);
// 重复次数
factory.setRepeatCount(5);
return factory;
}
/**
* 3.创建scheduler对象
*/
@Bean
public SchedulerFactoryBean getSchedulerFactoryBean(SimpleTriggerFactoryBean simpleTriggerFactoryBean) {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
// 关联trigger
factory.setTriggers(simpleTriggerFactoryBean.getObject());
return factory;
}
}
创建启动类
@SpringBootApplication
@EnableScheduling
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
点击右键启动,看结果
定时任务哟哟哟哟哟哟Tue Feb 12 17:07:52 CST 2019
定时任务哟哟哟哟哟哟Tue Feb 12 17:07:52 CST 2019
定时任务哟哟哟哟哟哟Tue Feb 12 17:07:52 CST 2019
2019-02-12 17:07:53.103 INFO 13536 --- [ restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2019-02-12 17:07:53.119 INFO 13536 --- [ restartedMain] com.itstone.App : Started App in 12.268 seconds (JVM running for 13.2)
定时任务哟哟哟哟哟哟Tue Feb 12 17:07:54 CST 2019
定时任务哟哟哟哟哟哟Tue Feb 12 17:07:56 CST 2019
定时任务哟哟哟哟哟哟Tue Feb 12 17:07:58 CST 2019
搞定 ,结束 !
时间怎么设置可以自行百度,很简单!