当前位置: 首页 > article >正文

SpringBoot定时任务——利用注解实现

目录

什么是定时任务?

定时任务的实现

cron的参数设置:

利用定时任务刷新数据库


什么是定时任务?

顾名思义就是定期的帮我们去实现一些功能,比如最常用的就是跟用户发送信息,还有就是定时的去清理一些垃圾数据

定时任务的实现

Scheduled注解可以帮助我们去实现一个简单的定时任务

这种形式存在一定的缺陷,如果我们的项目是集成开发的情况下,就可能出现一种情况

会有很多台机器进行该功能的执行,这样我们的代码就会报错,因此这种方式只能够应用在单机模式下

代码实例:我们先创建一个jobDemo类 ,然后加上@Scheduled注释 

@Component // j交给Springboot去管理我们的项目
@EnableScheduling
public class jobDemo {
    @Scheduled(cron = "0 50 21 1/1 1/1 ? ") //cron参数是设置时间的 如 每天的21点50分执行
    public void run(){
        System.out.println("我执行了");
    }
}

cron的参数设置:

我们可以去找百度一篇在线转译的工具,比如下面这一篇就可以使用:

在线Cron表达式生成器

完成这些操作以后,我们就可以就可以来实现一个定时刷新数据库的操作

利用定时任务刷新数据库

这里做一个简单的查询为例

还是先创建一个用于定时任务的类

利用@Autowired将service层引入

@Component
@EnableScheduling
public class JobTimeDemo {

    @Autowired
    private UserService userService;
 
    @Scheduled(cron = " 0/5 0,55,56 22 1/1 1/1 ? ")
    public void run(){
        System.out.println(userService.selectPasswordByName("admin","123456"));
        System.out.println("我执行了");
    }
}

 可以看到 已经可以自动查到数据库了

 另外 附加实体类

import lombok.Data;

@Data
public class UserDTO {
        private int id;
        private String userName;
        private String password;
}

xml层

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.dao.UserMapper">
    <select id="selectPasswordByName" resultType="com.kuang.dto.UserDTO">
    select * from user where user_name = #{userName} and password = #{password}
</select>
</mapper>

dao层

@Mapper
@Repository
public interface UserMapper {
    UserDTO selectPasswordByName(@Param("userName") String userName, @Param("password") String password);
}

service层

public interface UserService {
     UserDTO selectPasswordByName(String userName,String password);
}

service实现类

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public UserDTO selectPasswordByName(String userName,String password) {
        return userMapper.selectPasswordByName(userName,password);
    }
}


http://www.kler.cn/a/6203.html

相关文章:

  • 今日复盘103周五(189)
  • Echarts+vue电商平台数据可视化——webSocket改造项目
  • 【JVM】总结篇-字节码篇
  • 前端路由layout布局处理以及菜单交互(三)
  • Java 代码编译和解析方法信息
  • 迅为RK3568开发板编译Android12源码包-设置屏幕配置
  • 谷粒商城-redis分布式锁系列
  • Linux环境变量、Linux自定义设置环境变量
  • 核心 Android 调节音量的过程
  • 关于层序遍历的九道题
  • Linux命令·wc
  • 蓝桥杯3月刷题集训-A 【枚举模拟】Day3
  • 【基础算法】哈希表
  • 定点乘法器----部分积压缩(华为杯)
  • volatile、synchronize的特点和区别
  • python_接口自动化测试框架
  • 都说IT行业饱和了,2023年成为程序员还有发展前景吗?
  • 《Effective Objective-C 2.0 》 阅读笔记 item10
  • 从大到小排序-课后程序(JavaScript前端开发案例教程-黑马程序员编著-第3章-课后作业)
  • 第6章 封装组件高级篇(下) - table
  • 【经验】PCB拼板,不得不注意的10个问题,要收藏哦!
  • MySQL-事务
  • spark sql(五)sparksql支持查询哪些数据源,查询hive与查询mysql的区别
  • 【新2023Q2模拟题JAVA】华为OD机试 - 二叉树层次遍历
  • Linux下 lsof 命令详解
  • 文件系统设计详解