Java中实现定时任务,有多少种解决方案?

前言

好久没更新博客了,最近上班做了点小东西,总结复盘一下

参考资料:

SpringBoot 设置动态定时任务,千万别再写死了~ (qq.com)

3千字带你搞懂XXL-JOB任务调度平台-阿里云开发者社区 (aliyun.com)

一、定时任务

1. 引入依赖

创建Springboot应用,引入相应依赖:

<dependencies>  
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-web</artifactId>  
        <exclusions>  
            <exclusion>  
                <artifactId>spring-boot-starter-logging</artifactId>  
                <groupId>org.springframework.boot</groupId>  
            </exclusion>  
        </exclusions>  
    </dependency>  

    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-log4j2</artifactId>  
    </dependency>  

    <dependency>  
        <groupId>org.projectlombok</groupId>  
        <artifactId>lombok</artifactId>  
        <optional>true</optional>  
    </dependency>  
</dependencies>

在spring-boot-starter-web中排除spring-boot-starter-logging是为了不使用springboot默认的日志实现logback,而是引入log4j2的日志实现

引入lombok是为了使用@Data、@RequiredArgsConstructor等注解

2. 代码实现

在启动类上添加注解@EnableScheduling

package com.example.demo;  
  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
import org.springframework.scheduling.annotation.EnableScheduling;  
  
@SpringBootApplication  
@EnableScheduling   
public class DttNoticeApplication {
     
    public static void main(String[] args) {
     
        SpringApplication.run(DttNoticeApplication.class, args);  
    }  
}

配置文件指定运行的端口:

server:
    port: 8080

编写实现定时任务的类,用@Scheduled修饰执行定时任务的方法,并用@Component将该类注册为Bean

package com.example.demo;
 
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
@Component
public class Task{
   
    // cron表达式常用于定时任务,此处表示每10秒执行一次
    @Scheduled(cron="0/10 * * * * ?")  
    public void scheduledTask(){
   
        // ...
    }
}

二、动态定时任务

定时任务执行时间的配置文件,位于resources/task-config.ini:

printTime.cron=0/10 * * * * ?

编写实现定时任务的类,利用@PropertySource指定获取的配置文件并用@Value注入到相应成员中,并用@Component将该类注册为Bean

实现SchedulingConfigurer接口,重载configur

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值