spring定时器

基于spring的定时器


需求:每天凌晨一点将到期用户设置为过期

@Component
public class timer {
    protected Logger LOGGER = LogManager.getLogger(this.getClass());
    @Scheduled(cron="0 0 1 * * ?")
    public void update(){
        SQLReady sql = new SQLReady("UPDATE user SET status = '2' WHERE id in (select id from user where deadline<=(select TRUNC(SYSDATE) from dual))");
        LOGGER.info(sql);
        int i = Db.executeUpdate(sql);
        LOGGER.info(i);
    }
}

SQLReady是beetl封装了jdbc的sql操作,用mybatis项目就是定时去调用mapper中的方法就好

定时器配合项目启动执行方法实现缓存数据

@Component
public class getProvEveryday implements CommandLineRunner {

    @Autowired
    private ProvMapper provMapper;

    private static List<String> PROVLIST=new ArrayList<>(32);//全国包含的省份id

    @Override
    public void run(String... strings) throws Exception {
        PROVLIST=provMapper.queryProvById();
    }

    @Scheduled(cron = "0 0 1 * * *")
    public void updateProv(){
        PROVLIST=provMapper.queryProvById();
    }
}

实现CommandLineRunner接口的方法会被spring在项目启动时执行
因为省份信息很少变动,此处以省份信息为例,获取省份信息不需要每次查库,项目启动是触发一次,每天一点更新一次就好,此处存在静态变量中,也可以将查出的数据放在redis等内存数据库中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值