Jar*_*zew 2 java spring spring-el
我正在寻找一种从环境变量到pojo注入值的简洁方法,但是没有设置env变量的默认值.我知道这个语法:
@Value("#{systemProperties['JDBC_CONNECTION_STRING'] ?: \"jdbc:mysql://localhost:3306/mydb?user=root\"}")
Run Code Online (Sandbox Code Playgroud)
但这意味着我必须在java文件中硬编码默认值.我宁愿在属性文件中使用它.可能吗?
我需要这个,因为在AWS EBS上,env变量只是传递属性的方法,但我们不在那里部署.在其他地方我想从文件中读取道具.
在spring.xml配置文件中,添加以下内容:
<context:property-placeholder order="-50"/>
Run Code Online (Sandbox Code Playgroud)
然后
<context:property-placeholder order="0" location="classpath:x.y.z/application.properties"/>
Run Code Online (Sandbox Code Playgroud)
第一个property-placholder将从系统属性加载所有值,第二个将从属性文件加载.
请注意系统属性的顺序是如何比应用程序属性少一个,因此系统属性优先.
现在在您的类文件中,您只需执行以下操作:
@Value("${JDBC_CONNECTION_STRING}")
private String jdbcConnectionString
Run Code Online (Sandbox Code Playgroud)
它将从系统属性(如果存在)和应用程序属性(如果它不在系统属性中)中注入值.
我还想做的是有另一个属性文件,我从S3加载,其顺序介于上述两个之间,所以我可以覆盖默认值.
| 归档时间: |
|
| 查看次数: |
1830 次 |
| 最近记录: |