我正在使用以下命令来运行我的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
。我需要使用条件豆还是其他东西?
答案 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属性;
现在您的值在属性中,现在您可以在任何地方使用它。