【发布时间】:2019-06-17 02:11:59
【问题描述】:
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 属性。
有什么方法可以将项目 A 属性加载到 Test1.java 环境对象,将项目 B 属性加载到 Test2.java 环境对象。
【问题讨论】:
-
我认为你应该为不同的环境有不同的属性文件,然后你就不会费心连接一些像“dev”或“uat”这样的术语了。
-
看起来您正在解决 Spring Boot 中的默认支持。使用框架不要乱用它。
-
这两个不同的项目是分开的吗?
-
@AbdelghaniRoussi 是的
-
您说过“当我调试 Test2.java 时,环境具有项目 A 属性而不是项目 B 属性。”你确定双方的内容不一样?
标签: spring spring-boot spring-mvc properties environment