我正在开发一个基于Spring、Hibernate和Postgresql的分类广告网站。这些分类广告的发布期从2周到6个月不等。如何实现自动删除过期分类广告的解决方案?最好是从java层删除它们,还是使用Postgresql调度器?
提前谢谢。
发布于 2016-04-29 19:15:40
Spring为调度作业提供了支持。使用@Scheduled注释可以做到这一点。你可以看看这个网站
http://howtodoinjava.com/spring/spring-core/4-ways-to-schedule-tasks-in-spring-3-scheduled-example/
即每分钟安排一项任务
@Override
@Scheduled(cron = "1 * * * * ?")
public final void updateTest() throws IOException {
//do something here
}我更喜欢将它放在Spring中(在web应用程序中),因为如果我迁移数据库或操作系统,那么我必须重写它。
希望能有所帮助
发布于 2016-04-29 19:04:44
这是UNIX解决方案吗?如果是这样的话,可以使用CRON调用一个PostgreSQL .sql脚本,该脚本会在您认为必要的时间内删除它们。
发布于 2016-04-29 19:14:26
由于您已经在使用Spring,因此可以使用spring调度器运行必要的DB查询来删除行。
<task:scheduled-tasks>
<task:scheduled ref="deleteJob" method="run" cron="0 * * * * *"/>
</task:scheduled-tasks>
<bean id="deleteJob" class="..."/>deleteJob是一个简单的Spring bean,带有run()方法,它将基于CRON执行。
https://stackoverflow.com/questions/36936490
复制相似问题