我有一个用Spring制作的仪表板,必须控制一些任务执行。基本思想是让一个线程定期向远程跟踪器发送此任务。我怎样才能实现这个帖子?我一直在阅读,有些人说使用线程不是一个好主意。这会导致Spring生命周期出现问题吗?是否有其他方法可以定期调用方法?
答案 0 :(得分:5)
Spring支持任务调度。在此处查找更多信息:
E.g。您可以在应用程序上下文中配置计划任务,如下所示:
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="beanA" method="methodA" fixed-delay="5000"/>
</task:scheduled-tasks>
<task:scheduler id="myScheduler" pool-size="10"/>
答案 1 :(得分:2)
使用Spring时,您可以尝试Spring自己的任务调度。可以找到一个很好的教程 here。
我已经使用过这个了,效果很好。
答案 2 :(得分:2)
如果您需要一个与spring完美配合的强大任务调度程序,请使用quartz scheduler。您可以配置用于调度程序的线程数等等。 这里没有令人头疼的线程控制,石英调度程序可以很好地管理它。
可以在spring中配置它来处理非常复杂的计划,例如
每天从上午12点到凌晨4点每分钟触发一次。http://quartz-scheduler.org/了解更多信息。
答案 3 :(得分:0)
您可以使用@Scheduled注释或者您可以创建自己的线程并使其休眠并再次定期调用。
答案 4 :(得分:0)
将弹簧与石英相结合,让您的生活更轻松,满足所有预定的任务要求。这是一个可以帮助您的教程:
http://www.mkyong.com/spring/spring-quartz-scheduler-example/
答案 5 :(得分:0)
就我而言,我想每个月运行一次代码
我想说我要执行remove
类中的EmptyScopesRemoverImpl
函数
所以在spring xml中添加这个
<task:scheduled-tasks>
<task:scheduled ref="EmptyScopesRemover" method="remove" cron="0 0 0 1 * *"/>
</task:scheduled-tasks>
有关cron
值及其检查内容的详细信息,请检查https://stackoverflow.com/a/32521238/4251431
目前,该值意味着在the midnight on the first day of every month
运行该功能。
请注意EmptyScopesRemover
只是一个bean引用该类