你好朋友,
在本教程中,我们将学习如何在Spring Boot应用程序中使用配置文件。
我们将在本教程中讨论以下几点:
1.什么是Spring Boot Profile,为什么我们需要分析
2.如何使用示例在Spring Boot中进行性能分析 3.如何设置/更改默认配置文件
1.什么是Spring Boot Profile,为什么我们需要分析
假设您正在使用Spring Boot应用程序。您已经通过连接到计算机上安装的本地数据库在计算机上对应用程序进行了本地测试。现在,您想将此应用程序部署在DEV环境中,并且在其中也有DEV数据库服务器你有你的数据库。
现在,在本地测试应用程序时,在您的application.properties文件中,您将在数据库url,用户名,密码等详细信息中找到详细信息,这些信息是针对计算机上安装的本地数据库的,但是一旦移至DEV环境,您便希望您的应用程序与DEV数据库而不是本地数据库对话。
因此,您可以做的是,可以更改application.properties文件,其中包含连接到DEV数据库所需的详细信息,提交代码并将其部署在DEV上,但是现在的问题是此代码可以很好地与DEV数据库连接,但是当您尝试从本地执行此代码时,它将无法工作,因为您已将数据库详细信息更改为DEV数据库。
因此,再次使其在您的本地计算机上运行,您将必须在本地和执行应用程序所需的application.properties中进行更改。
如您所见,在本地和DEV之间进行混洗有很多麻烦。
现在想象一下,您拥有更多的环境,例如ST,ET(QA),PROD,并且必须一直手动进行更改,这将是一场噩梦。
那么解决方案是什么?
抢救中的Spring Boot配置文件!
Spring Boot使您可以外部化应用程序配置,以便无需更改即可在不同环境中使用相同的应用程序代码。
Spring Boot Profiles允许您针对每个环境配置多个application.properties文件,这样当您在本地时,它将使用本地属性文件,当您在DEV时,它将使用DEV属性文件,依此类推,而无需将其作为程序员需要对代码进行任何显式更改。
因此,通常来说,如果某些应用程序属性随环境而变化,则可以在Spring Profiles的帮助下进行处理。
看起来很酷。 是不是:)
2.如何使用示例在Spring Boot中进行性能分析
2.1按照我的帖子如何使用Spring Initializer创建Spring Boot项目并创建名称为“ Springbootprofiles”的Spring Boot项目。仅添加Web依赖项,因为这足以进行我们的测试。
2.2在由Spring intializer自动创建的应用程序.properties文件中,添加以下行:
application.environment =这是本地环境
2.3通过单击项目并选择运行方式->运行配置->运行来运行应用程序
2.4检查Spring Boot生成的控制台日志
您将在日志中看到以下行
2019-07-07 20:00:52.147信息15560 — [main] cbjsSpringbootprofilesApplication:未设置活动配置文件,回退到默认配置文件:默认
基本上,这表明我们尚未显式设置任何配置文件,因此Spring Boot使用默认配置文件,换句话说,Spring Boot使用application.properties文件中的配置。
我们如何检查呢?
让我们看看下一步。
2.5创建名为ProfileController.java的控制器,如下所示:
package com.blogspot.javasolutionsguide.springbootprofiles.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author javaSolutionsGuide
*
*/
@RequestMapping("/v1")
@RestController
public class ProfileController {
@Value("${application.environment}")
private String applicationEnv;
@GetMapping
public String getApplicationEnv() {
return applicationEnv;
}
}
在这里,基本上,我们想要做的是,我们尝试使用@Value注释访问控制器中application.properties文件中定义的application.environment属性,这样当我们从浏览器中访问此资源uri时,我们应该“这是一个本地环境”。
2.6让我们通过单击项目并选择Run as-> Run Configurations-> Run再次启动应用程序,然后实际访问资源URI(
http:// localhost:8080 / v1 ),看看是否从application.properties文件返回了期望的值。
因此,它正在按预期工作。
总结:当我们在spring boot应用程序中未设置任何配置文件时,默认情况下它将选择默认配置文件,该文件就是default application.properties文件。
注意:如果需要,您也可以将默认配置文件更改为其他属性文件。我们将在本教程的后面看到。
2.7现在,说您想将代码部署到DEV环境,以便当应用程序在DEV上运行时希望您的应用程序选择DEV特定的属性,而在本地运行时希望您的应用程序选择LOCAL环境的特定属性。
为此,我们需要做的是创建另一个名为application-dev.properties的属性文件。通常的命名约定是application- {profile name} .properties'
配置文件名称通常是环境名称,但可以是任何文本。
2.8让我们在application-dev.properties文件中添加以下行
application.environment =这是一个开发环境
2.9现在,如何告诉应用程序使用dev配置文件而不是默认配置文件。
为此,我们需要设置“ spring.profiles.active”环境变量,如下所示:
spring.profiles.active =开发
要进行设置,请右键单击项目,选择运行方式->运行配置->环境->新建->将名称添加为spring.profiles.active,将值添加为dev->单击确定->运行
2.10如果您现在要检查日志,则会在日志中找到以下行:
2019-07-07 20:22:08.557 INFO 17172 — [main] cbjsSpringbootprofilesApplication:以下配置文件处于活动状态:dev
这表明开发人员配置文件现在处于活动状态。
2.11让我们进行实际测试,看看我们的控制器是否从application-dev.properties中选择了值
2.12点击资源URI ( http:// localhost:8080 / v1 ),然后在浏览器中查看结果
很显然,该时间值已从application-dev.properties文件中选取。
总结:我们的Spring Boot应用程序中可以为n个环境使用n个属性文件,这些文件将具有特定于该环境的配置。要在相应环境中使用属性文件,我们要做的就是设置spring.profiles该环境的.active属性和spring boot将选择各自的属性文件。
3.如何设置/更改默认配置文件
正如我们在上面看到的那样,默认情况下,spring boot选择默认配置文件,这意味着它选择了application.properties文件。如果相反,我们想将dev用作我们的默认配置文件。
在这种情况下,您需要做的就是删除spring.profiles.active并将spring.profiles.default属性设置为我们要在Eclipse中将其设置为默认配置文件作为环境变量的配置文件。
spring.profiles.default =开发
现在,如果您要重新运行您的应用程序,您将在控制台日志中看到以下行:
2019-07-07 20:35:23.587 INFO 16832 — [main] cbjsSpringbootprofilesApplication:未设置活动配置文件,回退到默认配置文件:dev
因此,从上面的日志中可以明显看出,dev现在被视为默认配置文件。
我们可以通过点击资源URI( http:// localhost:8080 / v1 )进一步进行验证
总结:如果我们没有将任何配置文件设置为默认配置文件,则默认情况下,spring boot将从application.properties文件中选择配置。如果要将其他环境配置设为默认配置,则可以将spring.profiles.default属性设置为那个环境
即使未设置spring.profiles.active,Spring Boot也会选择该特定于环境的属性 感谢您的阅读。请与他人分享,您认为这可能会有所帮助。
翻译自: https://www.javacodegeeks.com/2019/07/profiles-spring-boot-application.html