ssm小说网站定时任务 ask:annotation-driven配置

问题:

做的spirng——ssm小说网站项目有vip,部分小说需要vip才能阅读,但是vip是有期限的,到期后需要清除vip状态,怎么清除呢?

本来想的是在登陆的时候更新,但是转念一想,写在登陆代码块里无关的代码会增加耦合,并且不太符合个vip逻辑。

方式:通过计时器解决:

然后我就思考,设定一个定时执行的sql语句不就行了吗?

最开始的时候我想,如何设置一个定时执行的sql,我就一直百度,mysql确实有这种功能,不过功能,复杂,并且可读性不好!

那有什么可读性好的,并且配置简单的定时任务呢?

诶?就是我们的ssm自带的time定时任务啦!

spring mvc中有个执行定时任务的定时器,功能算不上强大,但是胜在配置方便

在mvcxml加入对应的约束文件
xmlns:task="http://www.springframework.org/schema/task"
        http://www.springframework.org/schema/task
        http://www.springframework.org/schema/task/spring-task-3.2.xsd">

在这里插入图片描述

简单配置下mvc,记得要扫下包哦

最后加上@Scheduled注解就可以定义执行频率,就可以测试了哦

//@Scheduled(cron = “0 0 1 * * ?”)//每天凌晨1点整
//@Scheduled(cron = “0 30 0 * * ?”)//每天凌晨0点30分
//@Scheduled(cron = “0 */60 * * * ?”)//1小时处理一次

配上我的sql语句就可以执行更新vip状态了哦
![在这里插入图片描述](https://img-blog.csdnimg.cn/b0be9e9d6e6b481e94374bee5fa62c0c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Y-q5Lya5YaZYnVn55qE6Z2T5LuU,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

    @Update("UPDATE `user` LEFT JOIN `user_vip` ON (`user`.`name`= `user_vip`.`name`) SET state = '0' WHERE (end_time < NOW() or user_vip.end_time IS NULL)")
    public Integer updateVipState2();
    /**
     *过期的vip清理vip表
     * @param
     * @return
     */
    @Update("DELETE FROM user_vip WHERE (end_time< NOW())")
    public Integer deleteVipState();
import com.xxx.example.dao.vip.VipDao;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
public class DeleteVipTimer {
    @Resource
    private VipDao vipDao;
    @Scheduled(cron = "* */30 * * * ?")//表明该方法是一个定时任务,每30分钟执行一次
    public void test1() {
        System.out.println("定时任务清理vip开始,每30分钟执行一次..........");
        vipDao.updateVipState2();
        vipDao.deleteVipState();

    }}

结果:成功了哦!

在这里插入图片描述

@Scheduled参数部分,总共包含8各部分,我们来分别看一下其作用:

cron:一个类似cron的表达式,扩展了通常的UN * X定义,包括秒,分,时,星期,月,年的触发器。
***fixedDelay:在最后一次调用结束和下一次调用开始之间以固定周期(以毫秒为单位)执行带注释的方法。(要等待上次任务完成后)
fixedDelayString:同上面作用一样,只是String类型
fixedRate:在调用之间以固定的周期(以毫秒为单位)执行带注释的方法。(不需要等待上次任务完成)
fixedRateString:同上面作用一样,只是String类型
initialDelay:第一次执行fixedRate()或fixedDelay()任务之前延迟的毫秒数 。
initialDelayString:同上面作用一样,只是String类型 zone:指明解析cron表达式的时区。***
3.1:按顺序依次为
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只会写bug的靓仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值