SpringTask实现定时任务方法讲解
作者:龙贝子 发布时间:2022-06-11 11:43:42
标签:SpringTask,SpringBoot,定时任务
SpringTask是Spring自带的功能。实现起来比较简单。
使用SpringTask实现定时任务有两种方式:
1.注解方式
基于注解@Scheduled
@Scheduled(cron = "*/1 * * * * ?")
public void up(){
System.out.println("定时任务开启:"+System.currentTimeMillis());
}
cron表达式定义定时任务如何去执行。
2.配置文件xml方式
基于xml的方式【@Configuration + @ImportResource + xml】
需要重启应用才能生效
配置xml文件,定义xml文件的名称为task.xml,放置文件在resources文件夹下:
xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
<!--声明一个具有一个线程的池,如果定义多个,每个对象将获取同样的运行机会-->
<task:scheduler id="sch" pool-size="10"/>
<!--任务的调度类-->
<bean id="scheduleTask" class="com.cloudtop.base.task.ScheduleTask"/>
<!--引用线程池-->
<task:scheduled-tasks scheduler="sch">
<!--年报调度任务 5秒-->
<task:scheduled ref="scheduleTask" method="yearReportTask" cron="0/5 * * * * ?"/>
</task:scheduled-tasks>
</beans>
配置类加载xml文件
package com.cloudtop.base.task;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
/**
* 加载调度的配置文件
*/
@Configuration
@ImportResource(locations={"classpath:task/task.xml"})//加载调度xml
public class SpringTaskConfig {
}
任务的调度类实现
package com.cloudtop.base.task;
import com.cloudtop.base.error.exception.BusinessException;
import com.cloudtop.core.service.EnvironmentUpService;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 定时任务类
*/
public class ScheduleTask {
@Autowired
EnvironmentUpService environmentUpService;
public void yearReportTask() throws BusinessException {
System.out.println("*******定时任务执行的业务代码******");
}
}
最后,第一种使用注解@EnableSchedu ling开启定时任务,第二种使用xml的方式配置好上面的三个文件就开启了定时任务,不用使用注解@EnableSchedu ling来开启定时任务。
@SpringBootApplication
@ServletComponentScan
@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})
@EnableSchedu ling
public class CloudtopWebFrameApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(CloudtopWebFrameApplication.class);
}
/**
* 主程序入口
* 所有SpringBoot项目均采用main方法启动主程序,该部分为必须项
* @param args
*/
public static void main(String[] args) {
SpringApplication.run(CloudtopWebFrameApplication.class, args);
}
}
最后在控制台会输出结果:
来源:https://blog.csdn.net/qq_30624649/article/details/129020602
0
投稿
猜你喜欢
- 按照官方文档进行的配置:快速开始|mybatis-plus引入依赖:<!-- 引入mybatisPlus --> &
- 在使用springMVC框架构建web应用,客户端常会请求字符串、整型、json等格式的数据,通常使用@ResponseBody注解使 co
- 就网络和应用程序而言,键盘快捷键很重要,今天我们要谈的便是让这类快捷键得以在Flutter运作的小部件:Focus、Shortcuts和Ac
- 前言插入排序狭义上指的是简单插入排序(选择集合,比较大小,插入元素),广义上还应该包括希尔排序(分治思想)及其两种实现方式,最激动人心的是
- 熬夜写完,尚有不足,但仍在努力学习与总结中,而您的点赞与关注,是对我最大的鼓励!在一些本地化项目开发当中,存在这样一种需求,即开发完成的项目
- 一. CodeCache简介从字面意思理解就是代码缓存区,它缓存的是JIT(Just in Time)编译器编译的代码,简言之codeCac
- SpringCloudStream配置以下配置摘自《SpringCloud微服务实战》,配置主要包括两大部分:Stream配置(基础配置、通
- 简介AccessibilityService的设计初衷是为了辅助有身体缺陷的群体使用Android应用,它的设计贯穿着Android的控件树
- 问题springboot 集成springcloud时常常由于版本问题而报错,如下:com.sun.jersey.api.client.Cl
- HTTP请求,在日常开发中,还是比较常见的,今天给大家分享HttpUtils如何使用。阅读本文,你将收获:简单总结HTTP请求常用配置;Ja
- 一、栈(Stack)1、什么是栈?栈其实就是一种数据结构 - 先进后出(先入栈的数据后出来,最先入栈的数据会被压入栈底)什么是java虚拟机
- ElGamal数字签名,供大家参考,具体内容如下一、实验目的学习ElGamal算法在数字签名方面的使用,掌握教科书版本的ElGamal数字签
- 一问道StringBuffer与StringBuilder的区别,张口就来StringBuffer是线程安全的,因为它相关方法都加了sync
- java实现读取、删除文件夹下的文件package test.com;import java.io.File;import java.io.
- JoinPoint的getSignature方法在使用springboot写aop的时候,有个JoinPoint类,用来获取代理类和被代理类
- 循环队列结构队列特点队列为一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,
- 1 依赖配置<parent> <groupId>org.springframework.b
- 经过很多查看在巨人的肩膀上写完这篇博客,如有雷同纯属巧合,虽然自己也查了些文章才总结的,但是站在巨人肩膀上不敢搞原创!学习使用一些插件,可以
- 安装 Tomcat 之前请一定先安装 Java ,然后才能安装 Tomcat 。安装 Java 、环境变量 path 的设置以及 cmd 小
- forward_list 概述forward_list 是 C++ 11 新增的容器,它的实现为单链表。forward_list 是支持从容