[英]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.yaml
, application-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.