@Scheduled
是 Spring Framework 中的一个注解,用于安排方法定期执行或在特定时间点执行。
使用 @Scheduled
注解的方法需要满足以下条件:
- 该方法必须是公共的(public)。
- 该方法不应该返回任何值,或者返回一个可以忽略的值。
- 该方法不应该抛出任何异常。
@Configuration //1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling // 2.开启定时任务
java
@RestController
@RequestMapping("/administrator")
@Configuration //1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling // 2.开启定时任务
//@Component
public class UserConlleter {
@Resource
private Userservise userservise;
@Resource
private UserMapper userMapper;
@Resource
private JwtProperTies jwtProperTies;
@Resource
private HttpServletRequest httpServletRequest;
//生成随机邀请码用于注册
@PostMapping("Invitationcode/{id}")
private BaseResult<String> getCode(@PathVariable Integer id){
String code = CodeUtil.toSerialCode(id);
//设置权限码
Administrator administrator = userMapper.selectById(id);
administrator.setCode(code);
userservise.updateById(administrator);
return BaseResult.ok("请求成功",code);
}
//30分钟刷新校验码
@Scheduled(fixedRate = 300000)
@GetMapping("updateCode")
private void updateCode(){
List<Administrator> administratorList = userservise.list();
for (Administrator administrator:administratorList){
//获取code
BaseResult<String> code = getCode(administrator.getAid());
//设置校验码
administrator.setCode(code.getData());
//更新
userservise.updateById(administrator);
}
}
}