问题标签 [spring-profiles]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
206317 浏览

java - 如何在 Spring 中以编程方式获取当前的活动/默认环境配置文件?

我需要根据不同的当前环境配置文件编写不同的逻辑。

如何从 Spring 获取当前活动和默认配置文件?

0 投票
1 回答
211 浏览

spring - PropertiesPlaceholderConfigurer 子类可以检测到活动的 Spring 配置文件吗?

我们的配置文件有一个特定的格式,而不是有多个文件 - 即 dev.properties、uat.properties、prod.properties - 我们将所有值放在一个文件中,但每个环境用前缀分隔。例如:

服务端口=9800

DEV_SERVICE_PORT=7800

UAT_SERVICE_PORT=6600

我们有一个现有的类(PropertyPlaceholderConfigurer 的子类)查找这些值,并根据它正在执行的 IP 地址决定在 resolvePlaceHolder() 中添加什么前缀,即对于某个 IP 范围,使用 DEV_ 前缀,对于另一个,使用 UAT_ 前缀。然后这些值被传递给其他 bean,在某些情况下使用上下文 xml,在某些情况下使用某些 bean 构造函数上的 @Value${} 注释。前缀的使用是透明的,因此所有其他配置都将使用 SERVICE_PORT(在示例中)

我们想改变这一点,以便我们只检测活动的 Spring Profile 而不是使用 IP。我们的 web.xml 中有一个自定义的 ApplicationContextIniitalizer,它检测指示我们环境类型的 java System 属性。

我遇到的问题是,在调用 resolvePlaceHolder() 时,似乎还没有任何活动配置文件!我正在做的检测活动配置文件是:

  1. 创建一个 StandardEnvironment 的实例
  2. 调用 getActiveProfiles()

(2) 似乎总是返回一个空数组。这意味着属性占位符解析发生在任何 Spring 配置文件被激活之前。这个对吗??

何时设置活动配置文件,与 Spring 上下文加载期间的其他事件相关,如创建 bean、加载属性文件等?

是否可以在调用 resolvePlaceHolder() 时检测到活动配置文件?我应该扩展另一个类吗?

0 投票
1 回答
46655 浏览

java - 当配置文件不活动时包括 bean 定义

在我的应用程序中,我使用了几个配置文件来使某些 bean 符合自动装配的条件。我缺少的是当某个配置文件不活动时使 bean 有资格进行自动装配的可能性。

我想到的最好的方法是这样的:

  1. 假设我们有一个所有可能配置文件的列表,例如{A, B, C, D}。
  2. 对特定执行活动的配置文件是 {A, C}。
  3. 我所做的是为所有可能的非活动配置文件创建人工配置文件。在示例情况下,我将创建 {not_B, not_D} 配置文件。
  4. 我想根据X我为 profile激活的非活动配置文件激活 bean not_X。在我的情况下,如果我希望 bean 在配置文件 B 不活动时有资格进行自动装配,我会注释它们@Profile("not_B")

但是,此解决方案需要预先了解所有可能的配置文件。

你能想出更好的解决方案吗?

0 投票
1 回答
1698 浏览

java - 弹簧型材组

我有一个应用程序,我可以为其指定要运行它的配置文件。但我也想将这些配置文件分组为凭据、应用程序性能、内存打印、应用程序行为等。例如。我可以运行以下配置文件

但我更喜欢将其初始化为

或者

这是否可以在不编写任何自定义代码的情况下实现,例如 如何通过属性文件而不是通过环境变量或系统属性设置活动的 spring 3.1 环境配置文件。即使我可以从属性文件或 spring-xml 配置中加载这些,我也很好。我在 spring 3.1 上仅使用 xml 配置。

0 投票
2 回答
3314 浏览

java - 在 roo 项目中使用 javax.persistence.Table @Table 注释,如何使用 maven(或 spring)从构建配置文件中设置模式?

和标题里说的差不多。我想让 maven(或 roo)管理 @Table 注释在构建时使用的模式。

我试过了

但得出的结论是,这不是 maven 的工作方式。

0 投票
6 回答
147329 浏览

spring - 设置 Spring Profile 变量

我有两个 Spring 配置文件:devtest. 我想在服务器环境中设置活动配置文件,我不想在我的代码中设置它,以便无论我在哪里部署我的应用程序,配置文件都会根据服务器中的配置文件加载。我怎样才能做到这一点?

0 投票
0 回答
581 浏览

spring - Spring 配置文件、基于代码的配置和 JNDI

我正在转向基于 @Configuration 样式的新 Spring 3.x 代码。到目前为止,我做得很好,但是当我尝试添加 @Profile("production") 来选择 JNDI 数据源而不是 C3p0 连接池 @Profile("standalone") 时,我得到了:

当然,有很多细节(我在下面列出了一些供参考),但我的问题是:有人会张贴/指向一个工作示例吗?

谢谢,

细节:

  • 与 XML 相同的配置工作正常,
  • web.xml 指向 AppConfig.class 中配置的根上下文和 WebConfig.class 中配置的 servlet 上下文,
  • AppConfig 有一个 @Import(SomeConfig.class) 从服务层项目中提取配置 - 依赖项由 maven 连接,
  • SomeConfig 类在 C3p0 数据源上有 @Profile("standalone"),
  • AppConfig 类在 JNDI 数据源上有 @Profile("production"),web.xml 定义 spring.profiles.default=production。

编辑:已解决

我将个人资料移到了正确的位置。现在它们在同一个文件和同一个项目中:

0 投票
1 回答
11853 浏览

java - Spring MVC @Controller 和配置文件

我有一个 spring mvc 控制器,我只想在某些配置文件中启用它(例如developmenttest)。

我知道我可以在 xml 配置中使用元素的profile属性beans来限制我的 bean 的范围,但我现在正在为控制器使用方便的注释。

我可以以某种方式将带注释的控制器绑定到给定的配置文件吗?

还是我必须使用没有注释的“旧方式”(实现和声明控制器)并beans在 xml 配置中使用元素?

带注释的控制器会与“旧控制器”很好地混合吗?

编辑:我想到的另一种方法是从自动装配的环境实例中检查运行时的配置文件,但这拒绝了控制反转

0 投票
1 回答
1008 浏览

spring - 如何结合 spring 的 spring.profiles.active 将活动配置文件添加到 spring

我们确实有一些通过 web.xml spring.profiles.active 启用的弹簧配置文件,我想保留它,因为这是我们的部署团队激活配置文件的方式。此外,我想根据属性文件的存在激活更多配置文件。所以我添加了一个 ApplicationContextInitializer

但随后 spring 忽略了 spring.profiles.active 上下文参数并且不加载我的主要配置文件。

有人知道怎么做吗?

我想我可以添加一个 ServletContextListener 并向 spring.profiles.active 参数添加一个配置文件,但我认为这有点难看。

0 投票
1 回答
6859 浏览

spring - 在集成测试中使用 Spring @ActiveProfile

我正在使用 @Profile Spring 注释在嵌入式、独立和容器管理的数据源之间进行选择。为了选择“嵌入式”,我的集成测试被注释以激活适当的配置文件:

问题是我想将“@ActiveProfiles”移动到 TestConfigWrapper 中,但是这样做不会被选中,并且应用程序上下文不会加载任何数据源。

这意味着我必须使用 @ActiveProfile 注释每个集成测试,这实际上意味着它成为集成测试样板并且很容易阻碍未来的重构。

有没有办法使用 java config 来做到这一点?