问题标签 [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.
java - 不同环境中的 Spring Properties 文件配置和 maven 集成
由于正在使用 Spring 和 maven 开发一个大项目。然而,将有不同的环境需要部署,例如开发、测试、登台和生产。
该项目针对不同的环境具有许多不同的属性。
有什么优雅的方法可以解决这种事情,所以我可以把它作为模板,在其他项目中重用。
我猜将使用诸如配置文件、占位符等弹簧功能。
是否有任何好的教程或博客让我获得更好的解决方案?
java - AbstractTransactionalJUnit4SpringContextTests 中的 Spring 配置文件
我们有一组集成测试用于验证各种事情,包括我们的数据库在与我们的 JPA 映射和其他数据相关项相关的每个环境(Dev、Test、Qa 等)中处于正常状态。
我们通过 Spring Profile 配置要连接的数据库和其他特定于环境的事物。这在我们的自动化构建中非常有用,我们将环境变量“spring.profiles.active”设置为我们所处的任何环境,运行集成测试,轻松定位配置错误,以及其他有时可能被忽略的事情。
但是,我想要的是能够在集成测试套件中将 spring.profiles.default 属性设置为“dev”,这样当开发人员从 IDE 运行它们时,他们就不会收到抱怨缺少正在设置的配置文件。我们在 web.xml 中执行此操作以进行真正的部署,但我想知道的是如何连接到 AbstractTransactionalJUnit4SpringContextTests (或其他地方)来完成此操作?
spring - 使用特定配置文件导入弹簧上下文
在我的 java-spring-maven web-application 中,我使用了多个 spring 上下文(每个项目的单个上下文)。为了简单起见,假设我有 2 个 spring 上下文:a.xml 和 b.xml,每个都属于一个项目:项目 A 和项目 B,其中 A 依赖于 B。
a.xml 正在像这样导入 b.xml:
因此,在加载 a.xml 时,也会加载 b.xml。
现在,我的系统中有 2 个弹簧配置文件:我的上下文使用的测试和生产(为每个配置文件加载不同的属性占位符)。
所以在 a.xml 我得到了:
和 b.xml 中的相同约定(仅加载不同的属性文件)。我的属性文件位于 src/main/resources(生产文件)和 src/test/resources(测试文件)下。
现在我有这个看起来像这样的单元测试:
在这种情况下,a.xml 被加载到“test”配置文件中,并按预期加载所需的文件(test-props-for-a)。b.xml 是由 a.xml 导入的,但现在我遇到了一种奇怪的体验,我从 b.xml 加载的属性文件中的属性值没有被注入。
例如,如果我的属性文件中有这个属性:
在我的课上我得到了:
connectionIP 的值将是“${connection-ip}”而不是“1.2.3.4”。
请注意,文件位置以 开头classpath*
,没有 * 我得到 FileNotFoundException:
需要明确的是,文件 test-props-for-b.properties 位于项目 B 的 src/test/resources 下。为什么我会得到这个?
如果我运行一个直接加载 b.xml(不是通过 a.xml 导入)的测试,它工作得很好,文件 test-props-for-b.properties 中的测试属性会按预期加载。
难道我做错了什么?这可能是一个错误吗?如果是这样,你能建议一个解决方法吗?
更新
我从属性文件 (test-props-for-b.properties) 的路径中删除了星号 (*) 并调试了 spring 代码。在 ClassPathResource 类中,此方法引发异常:
以下是变量值:
this.clazz 为空。this.path 包含文件名test-props-for-b.properties
此命令返回 null:
this.classLoader.getResourceAsStream(this.path);
这是为什么?我可以清楚地看到项目 B 的 src/test/resources 下的文件。
spring - 在配置类中添加属性源
我必须加载一个属性文件,它的路径是在运行时确定的,同时还要弄清楚属性文件的格式。这意味着我不能只指定位置。我有一个属性加载器类,它读取文件并转换为键值对。过去我会通过实现 ApplicationContextInitializer 来做到这一点,但在这个应用程序中,我使用的是配置类,并且没有 web.xml 文件来注册这个监听器。我如何利用 @EnableWebMvc 配置类的启动过程来调用我的属性加载器类并将从它返回的地图添加为属性源。任何帮助,将不胜感激。
ejb - EJB 计时器和弹簧配置文件
我正在运行一个应用程序,它有一个每 5 分钟运行一次的后台进程。它在集群环境 (WAS 7.1) 中运行,但该进程一次只能在一台服务器上运行。出于这个原因,我选择了使用 javax.ejb.TimedObject 接口的 EJB Timer。计时器最初是通过同一个 EAR 中的 Web 应用程序 (Spring MVC) 安排的。这已经运行了一年多。
最近我已经将应用程序升级到 Spring 3.2.4 并使用了配置文件。现在,当服务器重新创建 EJB 作为其生命周期的一部分时,它有时会抱怨它找不到 bean 定义之一。这个 bean 恰好被定义了两次,一次是一个带有 'live' 配置文件的 beans 标签,另一个是 'test'。最初调度计时器的 Web 应用程序使用 web.xml 中的“spring.profiles.active”设置为“live”的 contexParam。这可确保计时器最初以“实时”配置启动。我怀疑当服务器重新创建 EJB 时,它正在重新创建 spring 上下文,但是 profile 参数在某处丢失了。
有没有人遇到过这个问题或对如何解决这个问题有任何建议?
提前致谢。
java - Spring 刷新属性占位符机制
我有一个上下文 xml 文件和一个由机制Spring
创建的特定 bean 。PropertyPlaceholderConfigurer
我的问题是:当应用程序工作时,相关的属性文件发生了变化,我不想重新启动应用程序。我想在不重新启动应用程序的情况下重新加载相关的 bean。
什么是我的目标的最佳解决方案?
java - Apache Aries 蓝图中是否有像 Spring Profiles 这样的配置文件?
我想知道是否有任何类似于 Apache Aries Blueprint 的 Spring Profiles 的东西。在将蓝图文件部署到 Apache Karaf 容器时,我试图有条件地加载内容,但我仍然没有弄清楚如何去做。
将蓝图 XML 文件分成两部分对我来说不是一个可接受的解决方案,但也许还有其他我不知道的解决方案可以做到这一点。
谢谢!
spring - 使用 Spring Profile 加载 util:properties 会导致 ID 多次出现
我正在使用 Spring(3.1) 配置文件通过 util:properties 加载属性文件:
我通过运行时参数调用配置文件(在 TC 服务器上运行):-Dspring.profiles.active=local
但我得到了错误There are multiple occurrences of ID value 'myProps'
这以前与其他 bean 定义一起运行,但是一旦util:properties
添加,我就会收到错误。
spring - Spring Profile条件prop文件多环境
我有一个关于 Spring Profiles 的问题。我理解不使用 Maven 配置文件的原因,因为每个环境都需要另一个工件。从那以后。我修改了我的代码以使用 Spring Profile,但 Spring Profiles 的问题是它要求您在服务器上为每个环境都有一个 database.property 文件。我有这个设置,每个人都看过一百次的相同设置。
我认为这种设置的问题是,每台服务器都会在 env 目录中拥有所有文件(即 dev 将在其服务器上拥有 prod.db.properties 和 test.db.properties 文件)。有没有办法只复制 Maven 构建过程中需要的文件而不使用配置文件?我一直想不出办法。如果是这种情况,那么这似乎是使用 Maven 配置文件的理由。我可能错过了什么。任何想法将不胜感激。