当应用程序第一次启动时,是否有任何Spring 3功能可以执行某些方法?我知道我可以设置一个带@Scheduled注释的方法,它只是在启动后执行,但它会定期执行.
如何为基于Spring的@Scheduled cron作业配置时区?
背景:
我有一份工作,每天执行一次,比如说下午2点,使用Spring的@Scheduled注释:
@Scheduled(cron = "0 0 14 * * *")
public void execute() {
// do scheduled job
}
Run Code Online (Sandbox Code Playgroud)
问题是不同服务器之间的下午2点不同,因为Spring在TimeZone.getDefault() 内部使用.而且,JavaDoc的TimeZone.getDefault() 状态表明:
获取此主机的默认TimeZone.默认TimeZone的来源可能因实施而异.
换句话说,不确定时区.它可能取决于JVM实现,服务器时区配置,服务器位置和/或其他未知因素.因此,cron作业在不同服务器上的不同时间触发,除非有办法明确设置应该使用哪个时区?
我使用的是Spring 3.2.2.
更新
截至春季4,Spring Jira问题SPR-10456已经解决.因此,@Scheduled注释具有新的区域属性,正是出于此目的.