Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(4) - Scheduled注解实现任务调度

Spring4.X + Spring MVC + Mybatis3 零配置应用开发框架搭建详解(4) - Scheduled注解实现任务调度

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有几个配置参数,我看通过下面的表查可以了解一下。

 
名称类型单位说明
cronString-cron表达式
zoneString-时区字符串(一般不需要设置)
fixedDelaylong毫秒调度间隔,下一个任务开始时间与上一个任务结束时间间隔[F-S]
fixedDelayStringString毫秒调度间隔,下一个任务开始时间与上一个任务结束时间间隔,字符串表示[F-S]
fixedRatelong毫秒调度间隔,下一个任务开始时间与上一个任务开始时间间隔[S-S]
fixedRateStringString毫秒调度间隔,下一个任务开始时间与上一个任务开始时间间隔,字符串表示[S-S]
initialDelaylong毫秒调度器启动延迟时间
initialDelayStringString毫秒调度器启动延迟时间,字符串表示

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版本源代码下载





  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个用于构建微服务的开源框架,它能够快速搭建项目并且提供了许多便捷的功能和特性。Spring Security 是一个用于处理认证和授权的框架,可以保护我们的应用程序免受恶意攻击。JWT(JSON Web Token)是一种用于身份验证的开放标准,可以被用于安全地传输信息。Spring MVC 是一个用于构建 Web 应用程序的框架,它能够处理 HTTP 请求和响应。MyBatis 是一个用于操作数据库的框架,可以简化数据库操作和提高效率。Redis 是一种高性能的键值存储系统,可以用于缓存与数据存储。 基于这些技术,可以搭建一个商城项目。Spring Boot 可以用于构建商城项目的后端服务,Spring Security 可以确保用户信息的安全性,JWT 可以用于用户的身份验证,Spring MVC 可以处理前端请求,MyBatis 可以操作数据库,Redis 可以用于缓存用户信息和商品信息。 商城项目的后端可以使用 Spring Boot 和 Spring Security 来搭建,通过 JWT 来处理用户的身份验证和授权。数据库操作可以使用 MyBatis 来简化与提高效率,同时可以利用 Redis 来缓存一些常用的数据和信息,提升系统的性能。前端请求则可以通过 Spring MVC 来处理,实现商城项目的整体功能。 综上所述,借助于 Spring Boot、Spring Security、JWT、Spring MVCMyBatis 和 Redis 这些技术,可以构建出一个高性能、安全可靠的商城项目,为用户提供良好的购物体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值