roc*_*cky 4 java spring spring-data spring-boot
我正在使用以下命令运行我的 Spring Boot 应用程序
java -Dlibrary.system.property=value -jar myapp.jar
Run Code Online (Sandbox Code Playgroud)
目前,我可以通过以下命令访问它
System.getProperty("library.system.property")
Run Code Online (Sandbox Code Playgroud)
但是我需要通过 Spring 中的任何注释来访问它,例如
@value(${library.system.property})
我试着用
@Value("${library.system.property")
private String property;
@Bean
public SampleProvider getSampleProvider () {
return SampleProvider.from(property);
}
Run Code Online (Sandbox Code Playgroud)
但财产的价值是null。我需要使用条件bean还是什么?
小智 12
您可以使用以下表达式访问系统属性:
@Value("#{systemProperties['library.system.property']}")
private String property
Run Code Online (Sandbox Code Playgroud)
您还可以使用以下表达式访问系统环境:
@Value("#{systemEnvironment['SOME_ENV_VARIABLE']}")
private String property
Run Code Online (Sandbox Code Playgroud)
最后,如果您使用的是 Spring Boot,只要您在命令行中传递它,就可以直接引用属性名称。例如,如果您像这样启动 JAR,则java -jar boot.jar --some.property=value可以将其阅读为:
@Value("${some.property}")
private String property
Run Code Online (Sandbox Code Playgroud)
谢谢大家。通过更改通过命令行传递参数的方式解决了问题,如下所示
java -jar myapp.jar --library.system.property=value
Run Code Online (Sandbox Code Playgroud)
通过下面的代码片段访问该值
@Value("${library.system.property}")
private String property;
@Bean
public SampleProvider getSampleProvider () {
return SampleProvider.from(property);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11562 次 |
| 最近记录: |