【发布时间】:2019-05-21 17:18:50
【问题描述】:
我正在使用以下命令来运行我的 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("${library.system.property}")应该可以工作。 -
Spring Boot 将环境变量、系统属性和命令行参数与注册的配置文件结合起来,并创建它所谓的“环境”。这提供了对上述所有内容的统一访问 - 您的建议应该完美无缺;不是吗?
-
当我在下面的代码
@Value("${library.system.property}") private String property; @Bean public void test() throws URISyntaxException { return testMethod(property); }中添加 @Value("${library.system.property}") 时它不起作用 -
将您的命令更改为:
java --library.system.property=value -jar myapp.jar -
感谢它在传递参数
java -jar myapp.jar --library.system.property=value并通过@Value("${library.system.property}")访问它后对我有用
标签: java spring spring-boot spring-data