首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spring应用程序中基于application.properties中定义的环境加载属性。不是斯普林普靴

问如何在Spring应用程序中基于application.properties中定义的环境加载属性。不是斯普林普靴
EN

Stack Overflow用户
提问于 2021-03-22 14:12:08
回答 1查看 739关注 0票数 0

我对春天不熟悉,我正在研究它。无意中发现了@Profile注释。

我想用Spring (而不是Springboot)编写一个简单的项目,学习如何使用@profile注释加载基于环境的属性。几乎在任何地方,我只在Springboot中看到的示例(Ex1、Ex2)。我想知道我们是否不能编写一个能够基于环境(dev,prod)动态加载属性的Spring应用程序。

  1. 一些示例( Ex3、Ex4、Ex5)使用@Profile显示,但这些示例为每个环境硬编码了bean细节,如下所示。这就是我们如何编写属性加载的方式吗? @Profile("dev") @Bean公共字符串devDBCcnnection() { System.out.println(dbConfiguration.getUrl());返回"DB Connection for Dev";} @Profile("test") @Bean公共字符串devTestCcnnection() {devTestCcnnection返回"DB Connection for Test";} @Profile("prod") @Bean公共字符串devProdCcnnection() { System.out.println("DB Connection for Prod");返回"DB Connection for Prod";}
  2. 它必须为每个配置文件编写一个bean,如上面的示例所示?

有人能告诉我使用@Profiles,不能像Spring应用程序那样动态加载属性值吗?

如果您能提供Spring 5的样品,非常感谢

EN

回答 1

Stack Overflow用户

发布于 2021-03-22 22:36:01

几乎在任何地方,我只在Springboot中看到的示例(Ex1、Ex2)。我想知道我们是否不能编写一个能够基于环境(dev,prod)动态加载属性的Spring应用程序。

Spring引导使用spring上下文。spring上下文允许您使用概要文件。因此,使用简单Spring项目(非spring启动)配置文件没有问题。

有许多方法可以使用概要文件。

其中之一就是您给出的具有@Profile的特定bean的示例,并在春季注册了一个特定的配置文件。

另一个在Enteprise应用程序中更常用的方法是发布一个带有多个application.yaml文件的jar应用程序。例如,您发布了包含dev-application.yaml和qa-application.yaml的应用程序。然后,您可以启动应用程序,选择要激活的特定配置文件。然后,当应用程序开始构建spring上下文时,将使用特定的application.yaml。因此,应用程序将使用qa-application.yaml启动,并将连接到QA数据库。

但是要小心,默认的application.yaml也会被加载。例如,特定的application.yaml (例如,qa-application.yaml )将加载在默认application.yaml之上。

下面的文章包含了关于spring配置文件弹簧剖面文章的非常好的信息。

考虑到我在这里的例子,我从那篇文章中引用了一些相关的内容。

默认配置文件默认配置文件始终处于活动状态。Spring将application.yml中的所有属性加载到默认配置文件中。我们可以将配置文件重命名为application-default.yml,它的工作原理是一样的。 其他配置文件将始终在默认配置文件的顶部进行评估。这意味着,如果属性是在默认配置文件中定义的,而不是在qa配置文件中定义的,则属性值将从默认配置文件中填充。这对于定义对所有配置文件都有效的默认值非常方便。

为了激活特定的配置文件

对于非spring引导项目,这里是一个非常好的答案弹簧活动剖面。

对于spring-boot项目,您可以

  1. 使用系统变量启动jar文件 java -Dspring.profiles.active=qa -jar myApp.jar
  2. 使用环境属性启动jar文件 export SPRING_PROFILES_ACTIVE=qa java -jar myApp.jar
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66747760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档