【问题标题】:How to get all Spring profile names?如何获取所有 Spring 配置文件名称?
【发布时间】:2016-12-24 18:57:41
【问题描述】:

我想知道是否有任何编程方式获取所有 Spring 配置文件名称,活动和非活动?

有几个问题只需要有效配置文件的名称。我的问题没有得到回答,因为我还需要非活动个人资料的名称。

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

【问题讨论】:

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

标签: java spring spring-profiles


【解决方案1】:

没有这样的东西。

当 Spring 初始化 ApplicationContext 时,它会维护活动配置文件,这些配置文件很容易从系统属性 spring.profiles.active 中检索。

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

Condition 匹配基于 @Profile 注释的值。

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

@Bean
@Profile("foo-profile")
public Foo foo() {
    return new Foo();
}

Spring 将使用ProfileConditionfoo-profile 与活动配置文件相匹配。如果没有匹配,Spring 会跳过这个 bean 定义。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2014-07-30
    • 2018-05-31
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多