一尘不染

我可以在Spring Boot配置文件中定义系统属性吗?

spring-boot

我的application.ymlSpring Boot应用程序有一个配置文件,该文件定义了两个配置文件(如文档中所述)。

启用生产配置文件后,我想将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属性以编程方式调用,但是仅通过配置文件有没有更简单的方法?


阅读 278

收藏
2020-05-30

共1个答案

一尘不染

我想我可以在“生产”配置文件上创建一个@Conditional的Bean,该Bean根据我的application.yml定义的属性以编程方式调用System.setProperty,但是仅通过配置文件有没有更简单的方法?

我认为这是您最好的选择。Spring Boot在将LoggingSystem各种logging.*属性映射到系统属性的过程中自行完成此操作。

请注意,您可能希望尽早设置系统属性Environment。为此,您可以使用ApplicationListener监听ApplicationEnvironmentPreparedEvent。您的ApplicationListener实现应通过中的条目进行注册spring.factories

2020-05-30