如何在Spring Boot应用程序中使用配置文件

你好朋友,

在本教程中,我们将学习如何在Spring Boot应用程序中使用配置文件。

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;@GetMappingpublic 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光纤收发器常见故障问题的时候我们该如何解决呢

当我们在使用光纤收发器的时候,难免会遇到一些问题,当遇到这些常见故障问题的时候我们该如何解决呢?接下来就由飞畅科技的小编来为大家详细介绍下光纤收发器常见故障问题排查方法,一起来看看吧! 一、整体故障排查法 1…

光纤收发器的AB端可随便连接吗?

对于光纤收发器而言,收发器的主要作用是延长网络传输距离,可在一定程度上缓解了网线无法远距离传输的缺陷,为最后一公里传输带来了便捷,但是对于刚接触收发器的人来说会犯一些最为常见的错误,如光纤收发器的发射端与接…

JSON和XML:它们如何比较?

JSON和XML:它们如何比较? JSON和XML是两种人类可读的文本格式,多年来已成为竞争对手。 XML的目的是通过可选使用模式来存储和定义文档和数据。 JSON几乎与之完全相反-序列化格式的要求非常简单,可以放在信用卡背面。 但是&#xf…

光纤收发器故障导致不能上网该如何解决?

光纤收发器的作用就是光信号和电信号之间的相互转换,其过程大概为:把电信号转换为光信号,通过光纤传送出去,在另一端再把光信号转化为电信号,再接入路由器、交换机等等设备。但是,光纤收发器在使用过程中难…

光纤收发器分发射和接收吗?光纤收发器配对使用问题详解!

光纤收发器是光口与电口之间的转换,是网口通过光纤来延伸的一种设备,光纤收发器作为光电转换设备一般是成对使用,但也可以出现光纤收发器与光纤交换机、光纤收发器与SFP收发器配对使用也是可以的,原则上只要光传输波长是一样的、信…

光纤收发器元器件指标详情

在以太网光纤收发器设计中,元器件的选择举足轻重,它决定了产品的性能、寿命和成本。光电介质转换芯片(OEMC)是整个收发器的核心。选择介质转换芯片是以太网光纤收发器设计的第一步,也是非常重要的一步。它的选择直接影响和决定了其它元器件的…

如何在网络中成对使用光纤收发器?

我们知道,传统以太网中非屏蔽双绞线的传输距离只能达到100米,而且很容易受到电磁干扰(EMI),导致网络性能不佳。以太网光纤收发器的出现有效地将传统以太网和现代光纤网络结合在一起,完美地解决了上述问题。那么,如何在…

职业综合英语 章节答案考试答案 深圳职业技术学院[渝粤教育]

教育 -职业综合英语-章节资料考试资料-深圳职业技术学院【】 Quiz 1、【判断题】 Google is the world’s most popular website. A、正确 B、错误 参考资料【 】 2、【判断题】Larry Page set up Google in January 1996 at Stanford. A、正确 B、错误 参考资料【 】 3、【判断…

什么是工业光纤收发器,工业收发器的作用是什么?

工业收发器是发射器和接收器的组合,两者共享公共电路。通常,收发器用于无线通信系统中。从历史上看,收发器用于将计算机连接到外围设备,例如打印机,键盘,调制解调器,操纵杆和鼠标。当前&#xf…

自动化测试在CI CD管道中的作用

业界广泛采用的软件开发实践:持续集成和持续部署可确保良好地交付产品并经常交付。 常规代码提交需要常规/连续测试,而如果忽略它,则可能导致基础架构无法恢复。 如何交付坚固的CI CD管道? 对于许多公司来说,这是一个问…

单模单纤光纤收发器指示灯及故障问题详解

光纤收发器是现在网络传输中应用比较广泛的设备了,其特点是成对使用,体积小,传输距离远(25KM)。在实际应用中难免会碰到一些故障,现杭州飞畅科技的小编就光纤收发器使用过程中的相关指示灯及故障问题整理如…

POE供电光纤收发器在网络监控中的应用

现如今,随着安防行业的不断发展,在传输信号的过程中对载体提出了更高的要求。光口交换机固然有其成本,市场化程度高等优点,但在网络摄像机越来越多的运用到光纤收发器加光纤交换机的方案。接下来就由飞畅科技的小编来为大家介绍下…

javafx canvas_JavaFX技巧2:使用Canvas API进行清晰绘图

javafx canvas最初开始使用Canvas API时,我注意到渲染代码的结果有些模糊,甚至更糟,不一致。 有些线条模糊,有些线条清晰。 来自Swing,我花了一些时间才意识到这是由JavaFX的坐标系引起的,该坐标系允许双精…

Zing加快了JVM应用程序的预热

Java虚拟机(JVM)提供了托管运行时环境,用于安全部署应用程序,其性能通常可以超过本机编译语言(如C和C )的性能。 通过即时(JIT)编译进行垃圾收集和自适应编译的内存管理是两个最突出…

多模光纤收发器的基本参数及主要特点

多模光纤收发器具备地址过滤、网络分段及智能报警等功能,可提高网络工作效率及网络运行可靠性。飞畅科技10/100M双芯多模自适应以太网光纤收发器,采用最新美国KENDIN芯片,高品质光收发一体模块,性能稳定,质量优良。适用…

没有垃圾回收的JVM

JVM社区不断增加新的GC,最近又添加了一个新的GC,它称为Epsilon ,是非常特殊的一个。 Epsilon仅分配内存,但不会回收任何内存。 看起来好像不执行任何垃圾回收的GC用途是什么。 这种类型的垃圾收集器有特殊用途,我们将…

多模光纤收发器的应用领域及适用领域

双纤多模高性能10/100Mbit自适应光纤收发器(光电转换器),具备地址过滤、网络分段及智能报警等功能,可提高网络工作效率及网络运行可靠性。可实现最远5公里无中继计算机数据网的高速远程互连。产品性能稳定可靠,设计方面…

光电转换器有什么用 光电转换器的作用

现如今,网络已经是我们生活中所必不可缺的一部分了,我们一旦离开了网络就仿佛与世界脱轨,所以说网络现在在我们的生活中扮演者一个非常重要的角色。在这其中光电转换器是一种不可缺少的设备,它将我们要发送的电信号转换成光信号&a…

Java中的命令设计模式

在本教程中,我们将学习命令模式,这是一种重要的行为设计模式。 它具有一些重要的应用程序,例如在文本编辑器中实现撤消/重做功能。 在命令设计模式中,有一个命令对象位于发送方和接收方对象之间。 发送者对象可以创建命令对象。 …

光纤收发器怎么连接?

我们想要上网,就必须连接网络,而日常生活当中我们最常使用的网络就是宽带,连接宽带需要通过网线进行连接,但是网线在传输数据时它有一定的局限性,它的传输距离很小,一般情况下网线的传输距离仅仅只有100米&…