我的 Spring Boot 应用程序有一个 application.yml
配置文件,它定义了两个配置文件(如 文档 中所述)。
启用生产配置文件后,我想将 http.maxConnections
系统属性设置为自定义值,例如
spring:
profiles:
active: dev
---
spring:
profiles: dev
---
spring:
profiles: production
http:
maxConnections: 15
但这实际上并没有设置系统级属性;它似乎只是创建一个应用程序级属性。在比较启动时,我已经通过 http://locahost:8080/env 和 JMX 控制台验证了这一点
java -jar -Dspring.profiles.active=production myapp.jar
相对
java -Dhttp.maxConnections=15 myapp.jar
我想我可以创建一个 bean,它是 @Conditional
在以编程方式调用 System.setProperty
的“生产”配置文件上 --- 基于我的 application.yml
单独通过配置文件的方式?
原文由 bdkosher 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为这是你最好的选择。 Spring Boot 自己在其
LoggingSystem
中执行此操作,其中各种logging.*
属性映射到系统属性。请注意,您可能希望尽早设置系统属性,可能是在
Environment
准备好之后。为此,您可以使用ApplicationListener
来侦听ApplicationEnvironmentPreparedEvent
。您的ApplicationListener
实施应通过spring.factories
中的条目注册。