I. *_*kov 3 spring scheduled-tasks quartz-scheduler quartz-core
我的应用程序基于弹簧启动.我想创建一个应用程序启动后应该只运行一次的任务.
目前,我正在研究两种解决方案:
使用@Scheduled和boolean属性,它应该确定逻辑shold是否运行.
@Scheduled
public void method(){
if(method_run_propery){
//do something;
}
}
使用Quartz.但我以前没用过.
请告诉我在这种情况下使用的最佳方法是什么.
如果必须在应用程序初始化后立即运行一次,则只需从单例bean的init方法启动它即可。Spring确保将在运行时所有依赖的Bean都已初始化。
例如,假设使用Java注释Spring配置,则可以使用类似以下内容的代码:
@Bean(init_method="init")
class TaskLauncher {
@Autowired DependantBeanClass dependant Bean;
...
public void init() {
// execute or start the task, eventually using the autowired dependant beans
...
}
}
Run Code Online (Sandbox Code Playgroud)
刷新上下文后,Spring会自动装配所有内容,初始化依赖的bean,然后将调用bean 的init方法一次TaskLauncher。
如果只需要在Spring初始化时启动某些东西,则不需要@Scheduler或Quartz
| 归档时间: |
|
| 查看次数: |
8534 次 |
| 最近记录: |