SpringBoot使用Quartz

目录

首先添加依赖

当前项目模块中创建quartz包

实现Job接口

QuartzConfig类


SpringBoot框架下使用Quartz格式还是非常固定的

首先添加依赖

我们选项csmall-stock-webapi模块pom文件

<!--  springBoot整合Quartz依赖  -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

先编写要执行的任务

当前项目模块中创建quartz包

包中创建一个QuartzJob的类

实现Job接口

代码如下

public class QuartzJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        // 实现一个简单的任务用作演示
        // 例如输出当前系统时间
        System.out.println("-------------------"+ LocalDateTime.now() 
                                                                +"---------------------");
    }
}

上面编写的是Job接口的实现类,要想运行还需要将它封装为JobDetail对象保存在Spring容器中

还有要创建一个Trigger设置要运行的时机,也保存到Spring容器中

在quartz包下,再创建一个

QuartzConfig类

其中编写它们的调度绑定关系

这个格式是固定的,后面再需要绑定,直接套用即可

// Quartz的绑定触发和调用关系的配置
// 实际上我们要配置的是Quartz中的调度器Scheduler
// 因为调度器已经在Spring中了,所以变为了配置Spring
@Configuration
public class QuartzConfig {
    // 配置的核心是两个对象,一个JobDetail对象指定工作内容,一个Trigger指定触发时间

    // 首先装配JobDetail: 将我们编写的Job实现类封装为JobDetail
    // 我们使用@Bean注解,将对象保存到Spring容器
    @Bean
    public JobDetail showTime(){
        System.out.println("!!!!!!!!!!!!!!!!!!!JobDetail保存到Spring容器");
        // newJob方法就是在绑定要运行的Job接口实现类,该方法参数要传入实现类的反射
        return JobBuilder.newJob(QuartzJob.class)
                // 为当前的JobDetail对象起名,用于Quartz的调度环境中
                .withIdentity("dateTime")
                // 默认情况下,JobDetail对象如果没有触发器绑定会立即被移除
                // 设置了storeDurably()之后,当前JobDetail对象没有触发器绑定也不会移除了
                .storeDurably()
                .build();
    }

    // 下面是触发器的声明,也会保存到Spring容器中管理
    // 它是设置Job运行时机的对象
    @Bean
    public Trigger showTimeTrigger(){
        System.out.println("!!!!!!!!!!!!!!!!!Trigger保存到Spring容器");
        // 要想设置触发时间,我们使用Cron表达式
        CronScheduleBuilder cron=
                CronScheduleBuilder.cronSchedule("0 * * * * ?");
        return TriggerBuilder.newTrigger()
                // 绑定要运行的JobDetail对象
                .forJob(showTime())
                // 给触发器起名
                .withIdentity("dateTrigger")
                // 绑定cron表达式
                .withSchedule(cron)
                .build();
    }



}

Nacos\Seata需要启动

其他服务和软件都可以关闭

然后启动csmall-stock-webapi模块

观察控制台输出

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nia134

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值