SpringTask实现定时任务方法讲解
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); } }
最后在控制台会输出结果:
到此这篇关于SpringTask实现定时任务方法讲解的文章就介绍到这了,更多相关SpringTask定时任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
mybatis-plus使用@EnumValue处理枚举类型的示例代码
这篇文章主要介绍了mybatis-plus使用@EnumValue处理枚举类型的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-09-09详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别
下面小编就为大家带来一篇详谈java中File类getPath()、getAbsolutePath()、getCanonical的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-07-07Java 事务注解@Transactional回滚(try catch、嵌套)问题
这篇文章主要介绍了Java @Transactional回滚(try catch、嵌套)问题,Spring 事务注解 @Transactional 本来可以保证原子性,如果事务内有报错的话,整个事务可以保证回滚,但是加上try catch或者事务嵌套,可能会导致事务回滚失败2022-08-08java读取文件:char的ASCII码值=65279,显示是一个空字符的解决
这篇文章主要介绍了java读取文件:char的ASCII码值=65279,显示是一个空字符的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-08-08浅谈Spring Cloud Netflix-Ribbon灰度方案之Zuul网关灰度
这篇文章主要介绍了浅谈Spring Cloud Netflix-Ribbon灰度方案之Zuul网关灰度,想了解Ribbon灰度的同学可以参考下2021-04-04
最新评论