问题标签 [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 投票
1 回答
7721 浏览

spring - 基于@Profile 的Spring @Autowire 字段

我需要根据spring.profiles.active属性自动装配字段。该服务仅基于配置文件创建,但由于该服务在其他类中自动装配,因此我无法使用 @Profile 注释。

有没有办法根据配置文件自动装配字段。

0 投票
1 回答
1717 浏览

java - 我可以在组件上使用@Profile 标签而不在 Spring Boot 或 Web.xml 中创建 @Configuration 类吗

到目前为止,我已经设法避免为我的 Spring Boot Maven 项目(除了 pom)开发任何 xml 文件,它们都是在编译时生成的,我希望通过在此处指定的运行命令中定义我的配置文件来保持这种方式.

通过简单地使用@ComponentScan我的主类来启用组件扫描并将我的DAO 标记为@Repository 我已经成功地自动装配了我的UserDAOmySQLImpl 类(它继承了UserDAO)。

然后期待在我们使用 db8 实现的 Live 中添加第二个 DAO,我需要应用程序确定需要使用哪个 UserDAO 实现。配置文件似乎是答案。

经过一番阅读,似乎我主要需要添加某种配置类和外部 xml 来管理这些配置文件和组件,尽管这看起来很乱,我希望没有必要。

我已经被两个实现标记为:

-

然后通过此处指定的 Maven 目标设置活动配置文件,希望这将是一个很好的干净解决方案,因此我可以分别在目标中为我们的开发和实时构建脚本指定活动配置文件。

我目前的测试目标是:

但是,在构建时,我收到一个错误,即两个 bean 都被拾取。

问题

  • Maven 目标中设置的配置文件是使用@Profile 标记时要检查的配置文件吗?

  • 当配置文件没有正确设置时,为什么 Spring 会同时选择两个实现?

  • 关于实现我正在寻找的东西的干净方式的任何建议?

奖金

我真的很想在应用程序中设置配置文件,因为很容易检查环境文件是否存在来决定使用哪个配置文件,尽管我正在努力复制它(在Spring Profiles 示例中找到

进入我正在处理的应用程序中不寻常的主类,我犹豫要不要玩。

任何帮助将不胜感激。

干杯,斯科特。

0 投票
1 回答
346 浏览

maven - Spring Boot中具有特定配置文件的包战争

我想war为特定的配置文件打包一个。这可能吗?我pom.xml的配置正确以打包war文件,我正在打包应用程序

但是,我不知道如何在此命令中提供 Spring 配置文件。

谢谢,任何帮助将不胜感激。

0 投票
0 回答
770 浏览

spring - Spring XML 配置无法检索活动配置文件

我正在处理的应用程序具有基于 XML 的 Spring 配置(框架版本:4.1.7.RELEASE)。

因为我想在指定配置文件的情况下实例化某些 bean,所以我将以下内容添加到我的web.xml

spring.profile是在 Maven pom.xml 中设置的属性,基于所选的 Maven 配置文件:

我在我的maven-war插件中启用了过滤,它按预期工作,因为占位符被替换为基于所选 Maven 配置文件的适当值。因此,涉及 Maven 的部分被清除并且工作正常。

但是,当我尝试注入 Environment 实例时,活动配置文件列表为空:

出现servletConfigInitParams在 的属性源列表中Environment,但似乎 myinit-param被忽略了。

我已经设法通过在两个 Maven 配置文件中提供实际系统属性并使用这些设置运行来设置 Spring 配置文件,但这对于生产环境来说不是一个可行的解决方案,也不会通过命令行提供这些配置文件。

谁能告诉我做错了什么?

0 投票
0 回答
132 浏览

spring - 是否可以将 Spring 配置文件传递给 Spring 子模块?

我有一个 Spring Boot 应用程序,其中 Spring 子模块作为依赖项。我使用 Spring Boot Maven 插件启动应用程序,如下所示:

对我来说,子模块似乎没有收到活动配置文件 foo,bar。

是否可以将 Spring 配置文件传递给 Spring 子模块?

0 投票
0 回答
708 浏览

java - 弹簧配置文件验证提供的活动配置文件是否可用

我正在使用弹簧配置文件来管理不同的 bean 集。活动配置文件以编程方式设置为覆盖

并使用

活动配置文件的来源是特定于环境的文件。因此,Environment 文件中的配置文件很可能与可用的配置文件(在 beans XML 上)不同,我想避免这种情况。我在 ConfigurableApplicationContext 上看不到“getAvailableProfiles”之类的访问器,我可以将其用于此目的。是否可以在设置之前验证活动配置文件值是否确实可用?

示例 XML

在这种情况下,我对可用配置文件的定义是“ProfileA”、“ProfileB”。在这种情况下,我不想将“ProfileC”设置为活动配置文件。

0 投票
1 回答
2303 浏览

java - Spring Boot 忽略“ignoreUnresolvablePlaceholders”= true

我的 Spring Boot 应用程序在忽略config.xml 文件中设置为 true 的ignoreUnresolvablePlaceHolders时遇到问题。

我明确设置了这些选项:

它在 Junit 中运行良好,但是当我将我的应用程序作为 Spring Boot 运行时,它会引发原因:java.lang.IllegalArgumentException:启动时无法解析占位符

当我像这样添加 Spring Profiles 时,一切都开始失败:

任何帮助将不胜感激...

0 投票
0 回答
279 浏览

java - 如何在应用程序执行期间自动切换到另一个 Spring 配置文件?(更改 DAO 工作的数据库)

我正在开发一个使用 Spring 开发的批处理应用程序。此应用程序必须读取一个数据库,然后必须写入另一个数据库。

所以我知道我可以使用 2 个不同的连接创建 2 个不同的 DAO,但我正在尝试使用 Spring 配置文件来做到这一点。

所以我有以下情况,我有一个名为的配置文件databaseConfiguration.xml,其中包含数据库连接的信息(我将此文件导入主配置文件applicationContext.xml):

正如您在前面的片段中看到的那样,我定义了 2 个不同的配置文件,它们定义了 2 个不同版本的数据源 bean,id="dataSourcePUC"用于创建与我的 2 个不同数据库的连接。

所以,在我的main()方法中,我做了这样的事情:

在此代码片段中,我首先在PROD上设置了活动配置文件,因此它被用于DB_1,以这种方式:

它工作正常,查询是在这个数据库上执行的。

问题是我想在DB_2上执行第二个查询,所以在这一行之前:

我必须设置其他配置文件COLL

要执行此操作,我还必须停止并刷新上下文吗?

具体怎么做呢?什么是最好的解决方案?

0 投票
9 回答
207034 浏览

java - 如何从系统变量设置 Spring 配置文件?

我有一个使用另一个项目的 Spring 项目。每个项目都有自己的 spring 配置文件,使用applicationContext.xml*.properties为每个配置文件从 java 代码初始化。我从args[]. 问题是第二个项目使用默认配置的 env applicationContext.xml 我无法将 env 从args[]第二个项目注入,我尝试寻找一篇解释 Spring 配置文件如何工作的文章。

  1. 是否有一个层次结构,当默认未配置时,它将在其上查看配置文件applicationContext.xml
  2. System var 是否比applicationContext.xml配置强?
  3. 你认为对我的挑战最好的解决方案是什么?

关于该主题的文章甚至示例将不胜感激!提前致谢。

0 投票
1 回答
710 浏览

spring - 多个 Spring 配置文件(每个 Profile 一个)

我是一名 Spring 新手,并试图从 Spring 的简单“配置文件”处理的优势中受益。我已经完成了本教程:https ://spring.io/blog/2011/02/14/spring-3-1-m1-introducing-profile现在我想将该概念应用到一个简单的示例中。我有两个配置文件:devprod. 我想象@Configuration每个配置文件都有一个类,我可以根据设置的配置文件实例化不同的bean(分别实现一个公共接口)。

我目前使用的类如下所示:

状态控制器.java

EnvironmentAwareBean.java

EnvironmentAwareBean.java

EnvironmentAwareBean.java

开发配置.java

产品配置.java

运行该示例会在启动期间引发此异常(SPRING_PROFILES_DEFAULT设置为dev):

(...) UnsatisfiedDependencyException: (...) 嵌套异常是 org.springframework.beans.factory.NoUniqueBeanDefinitionException: 没有定义 [EnvironmentAwareBean] 类型的合格 bean:预期单个匹配 bean 但找到 3:prodBean、devBean、getDevBean

我的方法与推荐的配置相去甚远吗?Configuration在我看来,使用注释对每个 bean进行@Profile注释而不是对每个 bean 都进行注释会更有意义,并且在以后添加新类时可能会忘记一些变体。