繁体   English   中英

Spring Boot @Scheduled with different Profiles

[英]Spring Boot @Scheduled with Different Profiles

我在 Spring 引导应用程序(Spring Boot 版本 1.5.10)中有一个 class,它在方法上使用 @Scheduled 注释,我想在我的application.yaml中管理此调度程序的执行间隔的值。Z6EEDC03A68A69DE73C27F 文件我能够使用fixedRateString = "${some.interval.value}"找到有关如何执行此操作的答案。 问题是我在同一个application.yaml中有多个配置文件。yaml 文件和 Spring 始终选择默认配置文件中的值。 即使我指定了不同的活动配置文件也会发生这种情况(我可以看到正确的非默认配置文件在启动日志中处于活动状态)。

有没有办法让 Spring 使用活动配置文件中的值而不是默认配置文件? 我见过使用多个application.yaml文件的解决方案(例如application-dev.yamlapplication-prod.yaml )。 但这看起来真的很笨重,如果可能的话,我想避免这种情况,因为我们有一些属性在配置文件之间不会改变,并且出于维护原因我不想复制这些值。 下面是我的设置示例。

应用程序.yaml

scheduled:
  rateValue = 1000

---

spring:
  profile: prod

scheduled:
  rateValue = 2000

服务 Class

public class foo {

    @Scheduled(fixedRateString = "${scheduled.rateValue}")
    public void bar() {
        // Do stuff
    }
}

我们可以创建多配置文件application.yml文件:

scheduled:
    rateValue = 1000
---
spring:
    profiles: development
scheduled:
    rateValue = 1500
---
spring:
    profiles: production
scheduled:
    rateValue = 2000

可以从给定的配置文件中省略不变的值。

更多信息: Spring 引导文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM