我正在尝试创建两个类来从两个不同的属性文件(
application-e1.properties
和application-e2.properties
)获取配置值。
application-e1.properties
=>
param=e1Test
application-e2.properties
=>
param=e2Test
我创建了 2 个类
EmployeeDev
和 EmployeeTest
来从各自的文件中读取:
@Component
@PropertySource("classpath:application-e1.properties")
public class EmployeeDev {
@Value("${param}")
String param;
public String getParam() {
return param;
}
public void setParam(String param) {
this.param = param;
}
}
@Component
@PropertySource("classpath:application-e2.properties")
public class EmployeeTest {
@Value("${param}")
String param;
public String getParam() {
return param;
}
public void setParam(String param) {
this.param = param;
}
}
每当我调用
EmployeeDev
或 EmployeeTest
时,它总是返回参数值作为 e2Test
。
我试图在这里一次创建 2 个配置文件的配置。 谁能帮我解决这个问题吗?
根据 Spring 的文档,这就是
@PropertySource
所做的:
注释提供了一种方便的声明性机制,用于将 PropertySource 添加到 Spring 的环境中。与@Configuration类结合使用。
因此,此注释所做的就是向现有环境添加特定的属性源。
您的代码所做的是,它通过将属性合并到一个环境中来组合两个源 application-e1.properties 和 application-e2.properties,而后面的属性会覆盖之前的属性。您现在有一个
Environment
,其中设置了 param=e2Test
。添加现有的属性源不会改变任何东西。
您应该做的是拥有不同的
Profiles
,在其相关属性文件中设置其属性,然后激活您需要的配置文件。如果您想在同一个配置文件中为不同用例设置不同的特定参数,则必须单独命名它们。