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);
}
}