如何在Spring Boot中从系统属性获取值

时间:2018-12-21 08:19:13

标签: 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。我需要使用条件豆还是其他东西?

4 个答案:

答案 0 :(得分:2)

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

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

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

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

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

@Value("some.property")
private String property

答案 1 :(得分:0)

谢谢。通过更改如下通过命令行传递参数的方式解决了问题

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

通过以下代码段访问值

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

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

答案 2 :(得分:0)

只需使用

import org.springframework.boot.system.SystemProperties;
...
String propertyKey = "library.system.property";
String propertyValue = SystemProperties.get(propertyKey);

答案 3 :(得分:-1)

您可以使用控制器上的@ Value从属性文件访问数据。 例如:     @Value(“ $ {library.system.property}”)     私有String属性;

现在您的值在属性中,现在您可以在任何地方使用它。