我的application.ymlSpring Boot应用程序有一个配置文件,该文件定义了两个配置文件(如文档中所述)。
application.yml
启用生产配置文件后,我想将http.maxConnections系统属性设置为自定义值,例如
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
我想我可以创建一个@Conditional在“生产”概要文件上的bean,该概要文件System.setProperty基于我的application.yml-defined属性以编程方式调用,但是仅通过配置文件有没有更简单的方法?
@Conditional
System.setProperty
我想我可以在“生产”配置文件上创建一个@Conditional的Bean,该Bean根据我的application.yml定义的属性以编程方式调用System.setProperty,但是仅通过配置文件有没有更简单的方法?
我认为这是您最好的选择。Spring Boot在将LoggingSystem各种logging.*属性映射到系统属性的过程中自行完成此操作。
LoggingSystem
logging.*
请注意,您可能希望尽早设置系统属性Environment。为此,您可以使用ApplicationListener监听ApplicationEnvironmentPreparedEvent。您的ApplicationListener实现应通过中的条目进行注册spring.factories。
Environment
ApplicationListener
ApplicationEnvironmentPreparedEvent
spring.factories