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

spring - Spring /boot、profiles、java config 和 bean 创建顺序(意外行为??)

我正在开发一个弹簧启动应用程序。我们有每个环境的属性文件(dev、int、qa、prd 等)。至于 bean,有些需要以不同的方式创建以用于生产。所以我们有这样的配置:

MyBean 自动装配如下:

启动应用程序时:

-Dspring.profiles.active=prd

正在调用“someBeanProd”方法(如预期的那样),并且正在加载相关的属性文件(application-prd.properties)。对于任何其他配置文件“someBeanDev”正在被调用(如预期的那样)并加载相关的属性文件。

但是,如果我如下更改配置中方法的顺序,则始终调用“someBeanDev”方法(即使活动配置文件为 prd),但正在使用正确的属性文件。

这是正确/预期的行为吗?无论配置文件中方法的顺序如何,我都希望 spring 创建正确的 bean。

有没有办法为一个配置文件定义一个bean,并且任何其他配置文件都应该回退到“默认”配置文件?

在不同的 Java 配置类中创建 prd bean 也不起作用。

0 投票
1 回答
119 浏览

spring-profiles - Spring MVC Rest 环境配置文件

我希望能够在我的 MVC REST 应用程序中使用不同的 application.properties。我已经为我的每个环境创建了 application-.properties。我只能通过设置 -Dmyapp.env= 然后添加

我正在查看 spring 配置文件,并认为我可以有一个 application.properties,并且在该文件中设置 spring.profiles.active= 并且特定的 application-.properties 文件也将被读取并覆盖 application.properties 中设置的任何 proeprties。 .但我无法让它工作,我注意到文档提到这个工作与弹簧靴..

有没有办法让它与网络应用程序一起工作(不是弹簧启动)

0 投票
1 回答
2507 浏览

spring - 当有多个活动配置文件时加载配置文件特定的属性

根据http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html我可以使用 application-${profile}.properties 加载不同的 application.properties 文件并设置活动配置文件。如果 application.properties 发生变化,那就太好了,但是如果我需要使用它的 batch.properties 怎么办?如果我有多个活动档案怎么办?例如:

我的属性是使用加载的:

我假设 batch-${profile}.properties 会尝试查找具有任何活动配置文件的所有属性文件,因此 batch-oracle.properties、batch-redis.properties、batch-hornetq.properties

它找到的将使用,而未找到的将被忽略。然而,情况似乎并非如此,并且根本找不到 ${profile}。

如果我只有一个活动配置文件很好,我可以使用 ${spring.active.profile},但是当我组件化我的应用程序时我正在慢慢创建更多配置文件,我想使用配置文件来加载属性而不创建一堆配置文件特定的属性占位符 bean。

----- 更新 ----- 根据“M. Deinum”的评论,我尝试了以下方法:

我看到了属性文件。

0 投票
1 回答
5354 浏览

spring - Spring YAML 配置文件配置

我不确定我是否充分理解 Spring 配置文件如何与 yaml 和属性文件一起使用。我试图混合这两种类型的配置(这两个文件不共享任何配置)但是我在从 yaml 配置中读取配置文件时遇到了问题。

我正在使用 Spring 4.1.1

这是代码。这是 context:property-placeholder 配置:

其中 yamlProperties 是以下 bean

这是test.yml

我的问题是,当我尝试通过这样做来配置(通过 xml)我的数据源时:

Spring 总是使用 YAML 文件中的最后一个配置,而忽略配置文件。我试图通过 web.xml 中的 contex-parameter 或直接将活动配置文件传递给 JVM(我实现了一个实现 EnvironmentAware 接口的 bean 以获取活动/默认配置文件,并且它是正确的),这似乎一切都很好,但是,当试图注入配置文件的值被忽略。

我相信使用属性占位符上下文(带有订单)我得到一个属性占位符,它是 PropertySourcesPlaceholderConfigurer 的一个实例,因此可以访问 Environment 但我不明白为什么配置文件被忽略并且 spring 获取最后一个 yaml 文件配置。

我在第 63.6 节 http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html中添加了对文档(spring-boot)的引用

提前致谢

0 投票
2 回答
1502 浏览

java - Java Spring 配置文件在 Linux 中不起作用

我有一个在 Windows 上开发的 Web 应用程序,然后我将它部署到 Linux(Staging nad Production)。

我为每个环境创建了 3 个 .properties 文件:

  • 应用程序-dev.properties
  • 应用程序-staging.properties
  • 应用程序-prod.properties

我决定实施以下解决方案 - 在每台机器上创建具有相关值(dev / staging / prod)的环境变量,并据此加载正确的 .properties 文件。

该解决方案在 Windows 上完美运行,但我无法让它在 Linux 上以同样的方式运行。

这是我的代码:

Web.xml

ConfigurableApplicationContextInitializer 类:

上下文配置类:

在 Linux 中,我已经在数百万个地方定义了这个变量 (APP_ENV)。在 .environment 文件中,在 .bash 文件中,在 setenv.sh 文件中。同样当我做 printenv - 我在那里看到它。

我尝试创建简单的 java 类 - main 打印 System.getenv("APP_ENV") 的值和正在打印的 "staging" 值。

但是在我的应用程序中,我总是看到 - 开发而不是登台。

我看到登台的唯一方法是向 web.xml 添加“硬编码”活动配置文件

但我真的不想这样工作,我希望它能够被自动识别和动态识别。

请帮忙 :)

0 投票
1 回答
947 浏览

java - Spring 错误 - 使用 Spring 配置文件:异常启动过滤器 applicationFilterChain

我从一个工作的 Spring 配置的 Web 应用程序开始,并一直在 Spring 上下文配置文件中的 beans 标记中添加一个 Spring 配置文件:

来自 web.xml

我现在得到以下异常,我不知道如何解决这个问题。

2015-11-25T16:06:17.631+0000|严重:WebModule[/MyWebApp]PWC1270:异常启动过滤器 applicationFilterChain java.lang.InstantiationException 在 org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:124) 在 org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4685) 在 org.apache.catalina.core.StandardContext.start( StandardContext.java:5377) 在 com.sun.enterprise.web.WebModule.start(WebModule.java:498) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917) 在 org.apache.catalina .core.ContainerBase.addChild(ContainerBase.java:901) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:733) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2019 ) 在 com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1669) 在 com.sun.enterprise.web.WebApplication.start(WebApplication.java:109) 在 org.glassfish.internal.data.EngineRef。start(EngineRef.java:130) at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269) at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:301) at com.sun .enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240) at org.glassfish.deployment.admin.DeployCommand.execute (DeployCommand.java:389) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)在 com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1066) 在 com.sun.enterprise.v3.admin.CommandRunnerImpl.access $1200(CommandRunnerImpl.java:95) 在 com.sun.enterprise。 v3.admin。CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259) at com.sun.enterprise.v3.admin.AdminAdapter.doCommand( AdminAdapter.java:461) 在 com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212) 在 com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179) 在 com .sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) 在 com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354) 在 com.sun.enterprise .v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 在 com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) 在 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask .java:第757章) (DefaultProtocolChain.java:137) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 在 com.sun.grizzly.http。 HttpProtocolChain.execute(HttpProtocolChain.java:79) 在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 在 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 在 com.sun.grizzly .ContextTask.run(ContextTask.java:71) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 在 com.sun.grizzly。util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:744) 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为“applicationFilterChain”的bean在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:549) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095) 在 org.springframework.beans.factory .support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 在 org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java :1109) 在组织。springframework.web.filter.DelegatingFilterProxy.initDelegate(DelegatingFilterProxy.java:326) at org.springframework.web.filter.DelegatingFilterProxy.initFilterBean(DelegatingFilterProxy.java:236) at org.springframework.web.filter.GenericFilterBean.init(GenericFilterBean. java:194) 在 org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:264) 在 org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:120) ... 41 更多getFilter(ApplicationFilterConfig.java:264) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:120) ... 41 更多getFilter(ApplicationFilterConfig.java:264) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:120) ... 41 更多

0 投票
1 回答
475 浏览

java - 如何在另一个具有默认配置文件的 bean 中使用弹簧配置文件 bean?

我在“开发”配置文件下有一个 bean:

我需要在另一个 bean 中使用这个 bean:

现在,所有环境的邮件模板都是相同的,所以我没有将它放在标有特定配置文件的配置中。

我尝试通过初始化ApplicationContextInitializer<ConfigurableApplicationContext>类来初始化配置文件:

并将其作为上下文参数:

但它们似乎都不起作用。它不断抛出 bean not found 异常。

org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有 java.util.Map com.fmr.bpo.asyncprocessingframework.invocator.wiring.configuration.pojo.common.RootConfig.internalMailingList

谢谢您的帮助。

0 投票
1 回答
1070 浏览

java - @IfProfileValue 两个弹簧型材

您好,我有一个 springboot 应用程序,有两个可能的 spring 配置文件,一个与环境配置相关(dev、prod、staging ...),一个模拟一些远程服务,我们称之为 remoteServiceMock。所以我有标有:

和模拟豆:

当我运行应用程序时,除了测试之外的一切都很好:

或者

因此加载了相应的bean。但是我在测试时遇到了问题。我的测试课:

只有当 spring.profiles.active 完全匹配时才会执行测试的问题。所以只有当我写下测试才会运行:

问题是:

1) 是否可以使用“包含”/“不包含”配置文件功能为 IfProfileValue 编写某种扩展

2)我的目标还有其他更好的解决方案吗?(所以我想模拟一个(功能有几个)远程服务并将我的应用程序部署到登台环境)。

谢谢

0 投票
0 回答
215 浏览

java - 弹簧 AOP。@Aspect 注释不适用于 @Profile

我有这个方面:

我希望能够使用配置文件禁用/启用它。因此,当我不指定“测量”配置文件时,它不起作用。

0 投票
2 回答
3486 浏览

java - 在 spring 中加载环境特定的属性文件

我正在开发一个 spring-boot 应用程序,在以下情况下我需要您的帮助。

我为每个环境都有属性文件,例如 application-dev.properties、application-prod.properties 等。我的应用程序是否可以通过使用 spring @Profile 注释来加载特定于环境的属性文件。

请帮忙。