Spring:根据属性应用Annotation

时间:2013-07-31 17:01:47

标签: spring annotations

假设我在函数上使用@Scheduled注释。但我希望只有在属性文件中定义了某个属性时,该注释才会生效。我们如何配置该场景? 使用案例:在多台服务器上部署相同的应用程序,但@Scheduled应仅在一台服务器上处于活动状态。

1 个答案:

答案 0 :(得分:0)

我的想法:

  • 使用额外的bean(MyScheduler),它只包含使用@Schedule注释的方法。此方法将调用“转发”到您的真实服务。
  • 然后使用@Component和@Profile
  • 注释MyScheduler类
  • 使用您的属性文件启用或禁用此配置文件

草图:

 @Component
 @Profile("onTHEserver")
 public class MyScheduler{

   @Autowire
   private RealService realService;

   @Schedule(cron="1****") {
       realService.doSomething();
   }
 }