定时利器之Spring Task

Spring Task简介

定时任务

在开发的过程中,我们可能会定时去处理一些问题,例如数据库的备份,定时开启某个服务等,我们不可能很准时的开启或关闭这些服务,因此我们需要一个定时任务管理器来替我们管理这些任务,下面是定时任务的入门的一些学习记录,仅供大家参考,如果你是大佬,请指出其中的不妥。

实现方式(三种)

java自带的API
    java.util.Timer
    java.util.TimerTask
Quartz框架

开源工具 功能强大 使用起来稍显复杂

Spring 3.0 Task

Spring 3.0
以后自带了task调度工具,比Quartz更加简单方便

开发环境准备

创建JavaWeb项目,使用maven

引入相关jar包

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
    </dependencies>

基本的配置

配置web.xml

    <!--spring配置文件的位置-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <!--Spring 的核心监听器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

如何使用SpringTask

纯xml配置方式

1.简单定时任务

  • 实现业务功能+配置定时规则
    <bean id="taskService" class="com.lxk.service.TaskServiceImpl"></bean>
    <!--xml配置定时任务方式的复杂方式-->
    <!--initial-delay :设置服务器启动多少毫秒后-->
    <!--fixed-delay: 每隔多少毫秒运行一次定时任务-->
    <task:scheduled-tasks>
        <task:scheduled ref="taskService" method="FirstTask" initial-delay="1000" fixed-delay="1000"/>
        <task:scheduled ref="taskService" method="SecondTask" initial-delay="2000" fixed-delay="3000"/>
    </task:scheduled-tasks>

2.复杂定时任务

corn(七子表达式)

    <bean id="taskService" class="com.lxk.service.TaskServiceImpl"></bean>
    <!--xml配置定时任务方式的复杂方式-->
    <task:scheduled-tasks>
        <task:scheduled ref="taskService" method="FirstTask" cron="*/5 * * * * ?"/>
        <task:scheduled ref="taskService" method="SecondTask" cron="0 45 15 * * ?"/>
    </task:scheduled-tasks>

全注解方式

    <!--注解的简单写法-->
    @Scheduled(initialDelay = 1000,fixedDelay = 1000)
    public void FirstTask() {
        System.out.println(new Date() + "第一个任务");
    }
    
    <!--注解的复杂写法:每天的1545执行-->
    @Scheduled(cron = "0 45 15 * * ?")
    public void SecondTask() {
        System.out.println(new Date() + "第二个任务");
    }

SpringBoot中使用

首先在pom.xml中引入相关依赖,这里我就不一一列出来了,有需要的可以参考前面的SpringBoot文章中的依赖引入

@Component
public class MyTask {

    @Scheduled(initialDelay = 1000,fixedDelay = 1000)
    public void firstTask(){
        System.out.println("MyTask:"+new Date()+"这是第一个任务");
    }
    @Scheduled(cron = "*/5 * * * * ?")
    public void secondTask(){
        System.out.println("MyTask:"+new Date()+"这是第二个任务");
    }
}

SpringBoot启动类,没有学过SpringBoot的可以查看我前面的文章,有很详细的入门教程

@EnableAutoConfiguration
@ComponentScan(basePackages = "com.lxk.service")
@EnableScheduling
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值