Environment
类在动态加载属性方面是否有限制?
@Autowired
private Environment environment;
environment.getProperty("spring.data".concat(dynamickey);
我有2个相关项目。
这两个项目都具有applicationcontext.xml
和提到的类路径,用于基于dev,uat,live ...等环境读取属性文件。
在一个类的两个项目中,我都初始化了Environment
类以读取属性。
不幸的是,在两个地方环境类都加载了相同的属性。如果我进行调试,我可以在两个地方看到相同的属性。
我的要求是在两个地方以不同的方式加载属性。
有人可以帮我解决问题吗?
有关上述查询的更多信息:
我有2个项目
Project A:
src
java
---- Test1.java
resources
----dev.properties
----uat.properties
----live.properties
----applicationcontext.xml -- contains bean with classpath
Project B:
src
java
---- Test2.java
resources
----dev.properties
----uat.properties
----live.properties
----applicationcontext.xml -- contains bean with classpath
Test1.java包含
class Test1{
@Autowired
private Environment environment;
public void abc(String val){
String aaa=environment.getProperty("address.".concat(val));
}
}
Test2.java包含
class Test2{
@Autowired
private Environment environment;
public void abc(String val){
String bbb=environment.getProperty("address.".concat(val));
}
}
当我调试Test2.java时,环境中具有项目A属性而不是项目B属性。
有什么方法可以将Project A属性加载到Test1.java环境对象,并将Project B属性加载到Test2.java环境对象。
答案 0 :(得分:0)
您可以在春季使用“个人档案”,并且有多种方法:
1。使用基于属性的配置文件:
创建多个属性文件(application-dev.properties,application-prod.properties,其中application.properties作为默认配置文件),然后使用-Dspring.profiles.active = dev运行您的应用程序。
2。使用基于Yaml的配置文件(application.yml):
有更多的选项可以做相同的事情
注意:我无法在响应中正确设置yaml代码的格式,这就是我附加图片的原因
答案 1 :(得分:0)
花了很多时间之后,我们才知道环境正在从两个项目中加载属性。
如果属性中的键不同,则不会有任何问题;如果属性文件中的键相同,则将从第一个加载的属性文件中获取属性。