java - Spring Boot中如何获取系统属性值

标签 java spring spring-boot spring-data

我正在使用以下命令来运行我的 Spring Boot 应用程序

java -Dlibrary.system.property=value -jar myapp.jar

目前,我可以通过以下命令访问它

System.getProperty("library.system.property")

但是我需要通过 Spring 中的任何注释来访问它,例如

@value(${library.system.property})

我尝试使用

    @Value("${library.system.property")
    private String property;

    @Bean
    public SampleProvider getSampleProvider () {
        return SampleProvider.from(property);
    }

但是该属性的值为null。我需要使用条件bean或其他东西吗?

最佳答案

您可以使用以下表达式访问系统属性:

@Value("#{systemProperties['library.system.property']}")
private String property

您还可以使用以下表达式访问系统环境:

@Value("#{systemEnvironment['SOME_ENV_VARIABLE']}")
private String property

最后,如果您使用 Spring Boot,只要在命令行中传递属性名称,就可以直接引用属性名称。例如,如果您像 java -jar boot.jar --some.property=value 一样启动 JAR,您可以将其读作:

@Value("${some.property}")
private String property

关于java - Spring Boot中如何获取系统属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53881318/

相关文章:

java - 从 Java 应用程序启动和停止 RESTful 服务

java - libgdx 中的 arraylist 出现错误

java - 如何将 int[] 转换为 Integer[]?

java - 自己的配置属性

java - 为什么这个简单的 Spring Boot 应用程序会给出空指针异常?

java - 设置Excel工作表背景图片

java - 如何从 HTTP 响应中获取 mongodb objectId

javascript - Axios POST 请求 : Content-type is set, 但在 spring 内它是空的

java - Spring实例化了bean但无法使用

java - java.time.Duration 的 springdoc-openapi-webflux-ui 问题(ISO 8601 持续时间格式)