假设我在函数上使用 @Scheduled 注释。但我希望该注释仅在属性文件中定义某些属性时才生效。我们如何配置该场景?用例:同一个应用程序部署在多台服务器上,但 @Scheduled 应该只在一台服务器上处于活动状态。
问问题
144 次
1 回答
0
我的想法:
- 使用一个额外的 bean (MyScheduler),它只包含一个用 @Schedule 注释的方法。此方法将调用“转发”到您的真实服务。
- 然后用@Component 和@Profile 注释MyScheduler 类
- 使用您的属性文件来启用或禁用此配置文件
草图:
@Component
@Profile("onTHEserver")
public class MyScheduler{
@Autowire
private RealService realService;
@Schedule(cron="1****") {
realService.doSomething();
}
}
- @See:Spring 3.1 M1:@Profile 简介
- @See:@Profile Java 文档
于 2013-07-31T18:35:46.370 回答