Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(4) - Scheduled注解实现任务调度
2016-08-15 15:45
881 查看
Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(4) - Scheduled注解实现任务调度
Scheduled完成定时任务的处理,一个类,一个注释,整个调度器就搞定了。
首先,我们在【task】项目中创建【com.aitongiy.web.task】包
然后创建【CustomTask.java】
方法上的@Scheduled有几个配置参数,我看通过下面的表查可以了解一下。
添加完成后,我们要在【back】项目的pom.xml文件中添加task任务的依赖,要不然【back】项目中无法扫描到【task】项目中的类
添加完成后,我们启动【back】服务,服务启动完成,看看日志,我们就知道它运行起来了,
注解方式的定时任务已经配置完成了,不过我们需要分析一下,这个注解方式的调度任务的优缺点:
优点:配置简单、高效
缺点:定时规则是写死的,无法进行配置,需要更新代码才能更改调度规则。
如果你的调度规则经常变化,就只能用XML的方式或者编程的方式手动处理,xml的方式是调度规则可灵活配置,代码中控制的方式是可以通过数据库,web的方式实现在线查看运行状态的处理,更灵活。
后期我会提供代码方式的示例。今天就暂时写到这里。
目录
(一)基本介绍
(二)基础框架搭建
(三)实现最基本的登录处理
(四)任务调度管理
(五)Redis缓存配置
(六)安全框架集成
(七) git版本源代码下载
1. 创建定时调度任务
很多项目都需要通过调度任务去完成一些非交互性的工作,比如定时更新数据库,定时统计上一天的数据等等。在零配置框架中,我们使用@Scheduled完成定时任务的处理,一个类,一个注释,整个调度器就搞定了。
首先,我们在【task】项目中创建【com.aitongiy.web.task】包
然后创建【CustomTask.java】
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * 自定义定时任务 * Created by admin on 16/8/15. */ @Component public class CustomTask { private static final Logger logger = LoggerFactory.getLogger(CustomTask.class); /** * 调度任务执行 * <pre> * <table> * <th> * <tr> <td>名称</td> <td>类型</td> <td>单位</td><td>说明</td> </tr> * </th> * * <tr> <td>cron</td> <td>String</td> <td> - </td> <td>cron表达式</td></tr> * <tr> <td>zone</td> <td>String</td> <td> - </td> <td>时区字符串(一般不需要设置)</td> </tr> * <tr> <td>fixedDelay</td> <td>long</td> <td>毫秒</td> <td>调度间隔,下一个任务开始时间与上一个任务结束时间间隔[F-S]</td> </tr> * <tr> <td>fixedDelayString</td> <td>String</td> <td>毫秒</td> <td>调度间隔,下一个任务开始时间与上一个任务结束时间间隔,字符串表示[F-S]</td> </tr> * <tr> <td>fixedRate</td> <td>long</td> <td>毫秒</td> <td>调度间隔,下一个任务开始时间与上一个任务开始时间间隔[S-S]</td> </tr> * <tr> <td>fixedRateString</td> <td>String</td> <td>毫秒</td> <td>调度间隔,下一个任务开始时间与上一个任务开始时间间隔,字符串表示[S-S]</td> </tr> * <tr> <td>initialDelay</td> <td>long</td> <td>毫秒</td> <td>调度器启动延迟时间</td> </tr> * <tr> <td>initialDelayString</td> <td>String</td> <td>毫秒</td> <td>调度器启动延迟时间,字符串表示</td> </tr> * * </table> * </pre> */ @Scheduled(fixedRate = 1000 * 10,initialDelay = 1000 * 5) private void taskRun(){ logger.info("CustomTask run ..."); } }
方法上的@Scheduled有几个配置参数,我看通过下面的表查可以了解一下。
名称 | 类型 | 单位 | 说明 |
cron | String | - | cron表达式 |
zone | String | - | 时区字符串(一般不需要设置) |
fixedDelay | long | 毫秒 | 调度间隔,下一个任务开始时间与上一个任务结束时间间隔[F-S] |
fixedDelayString | String | 毫秒 | 调度间隔,下一个任务开始时间与上一个任务结束时间间隔,字符串表示[F-S] |
fixedRate | long | 毫秒 | 调度间隔,下一个任务开始时间与上一个任务开始时间间隔[S-S] |
fixedRateString | String | 毫秒 | 调度间隔,下一个任务开始时间与上一个任务开始时间间隔,字符串表示[S-S] |
initialDelay | long | 毫秒 | 调度器启动延迟时间 |
initialDelayString | String | 毫秒 | 调度器启动延迟时间,字符串表示 |
2. 添加定时调度配置
然后我们需要在【back】项目的【MvcConfig.java】中的【@ConponentScan】注释中加入【com.aitongyi.web.task】@EnableWebMvc @EnableAspectJAutoProxy @EnableScheduling @ComponentScan(basePackages = {"com.aitongyi.web.back.controller", "com.aitongyi.web.service", "com.aitongyi.web.task"}) @MapperScan("com.aitongyi.web.dao.mapper")
添加完成后,我们要在【back】项目的pom.xml文件中添加task任务的依赖,要不然【back】项目中无法扫描到【task】项目中的类
<dependencies> <dependency> <groupId>com.aitongyi.web</groupId> <artifactId>dao</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.aitongyi.web</groupId> <artifactId>bean</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.aitongyi.web</groupId> <artifactId>service</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.aitongyi.web</groupId> <artifactId>task</artifactId> <version>${project.version}</version> </dependency>
添加完成后,我们启动【back】服务,服务启动完成,看看日志,我们就知道它运行起来了,
[INFO ][12:25:47] - [com.aitongyi.web.task.CustomTask] - CustomTask run ... [INFO ][12:25:47] - [com.aitongyi.web.task.CustomTask] - CustomTask run ... [INFO ][12:25:47] - [com.aitongyi.web.task.CustomTask] - CustomTask run ... [INFO ][12:25:47] - [com.aitongyi.web.task.CustomTask] - CustomTask run ... [INFO ][12:25:47] - [com.aitongyi.web.task.CustomTask] - CustomTask run ... [INFO ][12:25:47] - [com.aitongyi.web.task.CustomTask] - CustomTask run ...
注解方式的定时任务已经配置完成了,不过我们需要分析一下,这个注解方式的调度任务的优缺点:
优点:配置简单、高效
缺点:定时规则是写死的,无法进行配置,需要更新代码才能更改调度规则。
如果你的调度规则经常变化,就只能用XML的方式或者编程的方式手动处理,xml的方式是调度规则可灵活配置,代码中控制的方式是可以通过数据库,web的方式实现在线查看运行状态的处理,更灵活。
后期我会提供代码方式的示例。今天就暂时写到这里。
目录
(一)基本介绍
(二)基础框架搭建
(三)实现最基本的登录处理
(四)任务调度管理
(五)Redis缓存配置
(六)安全框架集成
(七) git版本源代码下载
相关文章推荐
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(4) - Scheduled注解实现任务调度
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解 (3) - 实现最基本的登录处理
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解 (3) - 实现最基本的登录处理
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解 (3) - 实现最基本的登录处理
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(5) - Redis缓存配置
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解 (2) - 基础框架搭建
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(5) - Redis缓存配置
- Spring4.X + spring MVC + Mybatis3 零配置应用开发框架搭建详解(1) - 基本介绍
- Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解 (2) - 基础框架搭建
- Spring概述、框架搭建、相关概念、配置详解(XML)和配置详解(注解)
- Spring MVC 4.1.3 + MyBatis 零基础搭建Web开发框架(注解模式哦)
- 基于元数据配置的asp.net数据库应用快速开发框架设计及实现
- 详解SpringMVC和MyBatis框架开发环境搭建和简单实用
- 使用Spring 注解实现调度任务及cron表达式详解
- Spring MVC 4.1.3 + MyBatis 零基础搭建Web开发框架(注解模式哦)
- Spring MVC + MyBatis+Maven 零基础搭建Web开发框架(注解模式哦)
- java计划任务调度框架quartz结合spring实现调度的配置实例代码分享
- Java开发框架--spring-myBatis.xml 配置详解