【发布时间】:2014-06-30 08:02:26
【问题描述】:
我只是想知道当指定多个 Spring 活动配置文件时,优先顺序是什么。
假设我希望 default 配置文件处于活动状态,但当有多个相同的元素(例如 bean)可供选择但配置文件不同时,dev 配置文件会覆盖它...
例如,我有两个 PropertySourcesPlaceholderConfigurer bean 配置了 "default" 和 "dev" 值环境配置文件。
如果我使用以下配置文件激活:-Dspring.profiles.active="default,dev"
dev 配置文件会覆盖 default 吗?
如果不是,如何实现上述行为?
【问题讨论】:
-
AFAIK,配置文件之间定义的唯一“优先级”是基于 bean 的声明顺序(就像覆盖任何 bean 的定义一样),最后一个特定于配置文件的 bean 获胜。因此,如果您在两个配置文件中都有一个带有
id="dataSource"的 bean,那么将使用该 bean 的最后一个定义,因为第一个定义将被最后一个定义覆盖。spring.profiles.active中配置文件的顺序实际上并不重要。