【发布时间】:2023-03-12 06:02:01
【问题描述】:
我在资源文件夹中存储了 2 个属性文件:qa.properties 和 dev.properties。
我指定了 Maven 属性“环境”,这是应该加载的属性文件的名称。
<properties>
<environment>qa</environment>
</properties>
我想根据 maven 变量加载所需的属性,但是@PropertySource 没有看到 maven 变量。如何将“环境”属性从 Maven 传递到 @PropertySource?
@Configuration
@PropertySource("classpath:${environment}.properties")
public class Config {
@Autowired
private Environment env;
public Environment getEnv() {
return env;
}
public void setEnv(Environment env) {
this.env = env;
}
}
【问题讨论】:
-
你没有。 Maven 属性是构建时的。 Spring 是运行时的。你需要让你的构建部署一个不同的文件,以供 Spring 看到。
-
您应该研究的是 spring 提供的profile feature,这将允许您根据活动配置文件有条件地实例化 bean。