我有一个需要被每天07:00执行的方法。 对于这个问题,我创建一个豆与方法,并用它注解@Scheduled(cron="0 0 7 * * ?")
在这个bean我装箱一个main
功能-这将初始化Spring上下文,拿到豆和调用方法(至少在第一次),如下所示:
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(args[0]);
SchedulerService schedulerService = context.getBean(SchedulerService.class);
schedulerService.myMethod();
}
这只是正常 - 但只有一次。 我想我明白为什么-这是因为main
线程结束-所以是如此,即使在Spring上下文myMethod
标注有@Scheduled
它不会工作。
我想了一个办法来传递这个-意不要让main
线程死了,也许是这样的:
while (true){
Thread.currentThread().sleep(500);
}
这就是我,想,应用程序上下文将保留,所以是我的豆。
我对吗?
有没有更好的办法来解决这个问题?
我使用的弹簧3.1.2。
谢谢。