Java 如何获取所有Spring配置文件名称?

Java 如何获取所有Spring配置文件名称?,java,spring,spring-profiles,Java,Spring,Spring Profiles,我想知道是否有任何编程方法可以获得所有Spring配置文件的名称,活动和非活动 有几个问题只需要活动配置文件的名称。我的问题没有回答这些问题,因为我还需要非活动配置文件的名称 原因:我想在下拉列表中显示所有这样的配置文件名称,用户可以从中选择要使用的配置文件。没有这样的东西 当Spring初始化ApplicationContext时,它会维护活动的配置文件,这些配置文件可以从系统属性Spring.profiles.active轻松检索 当它通过组件注册相应的bean定义时,它会检查组件是否匹配某

我想知道是否有任何编程方法可以获得所有Spring配置文件的名称,活动和非活动

有几个问题只需要活动配置文件的名称。我的问题没有回答这些问题,因为我还需要非活动配置文件的名称


原因:我想在下拉列表中显示所有这样的配置文件名称,用户可以从中选择要使用的配置文件。

没有这样的东西

当Spring初始化
ApplicationContext
时,它会维护活动的配置文件,这些配置文件可以从系统属性
Spring.profiles.active
轻松检索

当它通过组件注册相应的bean定义时,它会检查组件是否匹配某个对象集。其中一个是
ProfileCondition
,它是

基于
@Profile
注释的值匹配的
条件

例如,如果您有一个用
@Profile
注释的
@Bean
方法

@Bean
@Profile("foo-profile")
public Foo foo() {
    return new Foo();
}
Spring将使用
ProfileCondition
foo配置文件
与活动配置文件进行匹配。如果没有匹配项,Spring将跳过这个bean定义


它从来不会实际存储所有可能的
@Profile
值。

对于投票被否决的人,你能解释一下你为什么这么做吗?我认为这是一个公平的问题。激活的配置文件在启动时加载。未加载非活动配置文件。此外,您不能在运行时更改活动配置文件。它需要重新启动应用程序,或者更准确地说是重新加载spring容器,例如,请参阅。这对我来说也是一个公平的问题。我想显示命令行应用程序的所有可能配置文件。不带任何参数调用该命令将列出所有配置文件。对于下一个命令执行,用户可以从控制台输出中显示的列表中提供参数。