我正在开发一个 Spring-MVC 应用程序,其中我使用调度来删除不必要的额外内容。不幸的是,我预定的方法没有触发。谁能告诉我我做错了什么。
这是代码:
@Repository
@Transactional
@EnableScheduling
public class NotificationDAOImpl implements NotificationDAO{
@Override
@Scheduled(cron = "0 3 3 * * ?")
public void deleteNotificationsAutoMagically(){
session=this.sessionFactory.getCurrentSession();
long now = System.currentTimeMillis();
long nowMinus1Week = now - (1000 * 60 * 60 * 24 * 3);
Timestamp nowMinus1WeekAsTimeStamp = new Timestamp(nowMinus1Week);
Query query = session.createQuery("delete from NoteLock as nl where nl.timestamp < :limit and nl.read=:true");
query.setParameter("limit", nowMinus1WeekAsTimeStamp);
query.executeUpdate();
session.flush();
}
}
我知道参数名称适用于 1 周,但我将在 3 天后删除它。我刚刚复制了代码..:D 任何帮助都会很好。谢谢。
最佳答案
该 cron 表达式看起来会在每月 3 日 3 点运行。
如果您想每 3 分钟运行一次,可以使用以下表达式。
0 0/3 * 1/1 * ? *
您可以使用cronmaker用于生成表达式
要验证您创建的 cron 表达式是否有效,请访问此 page
关于java - Spring-MVC : Scheduled job did not execute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30187228/