Spring Boot YAML配置

在本快速教程中,我们将学习如何使用YAML文件来配置Spring Boot应用程序的属性。

什么是YAML文件?

除了可以在Spring中没有应用程序.properties之外 ,我们还可以使用application.yml作为配置文件。 YAML是JSON的超集,我们可以将其用于配置数据。 YAML文件更易于阅读,尤其是当我们有许多层次结构配置时。

让我们看看一个非常基本的YAML文件是什么样的:

src / main / resources / application.yml

server:url: http://localhost  myapp:name: MyApplicationthreadCount: 4
...

上面的YAML文件等效于下面的application.properties文件:

server.url=http://localhost
server.myapp.name=MyApplication
server.myapp.threadCount=4
...

Spring使用SnakeYAML来解析YAML文件,该文件在spring-boot-starter中可用

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.1.5.RELEASE</version>
</dependency>

我们可以在Maven存储库中查看此依赖项的最新版本。

YAML中的Spring配置文件:

我们可以使用spring.profiles键来提及应用了属性值的配置文件。 例如:

spring:profiles: dev | test
server:url: http://localhost  app:name: MyApplicationthreadCount: 4users: - A- B
----
spring:profiles: prod
server:url: http://myapp.org app:name: MyApplicationthreadCount: 10users: - Jacob- James

然后根据活动的弹簧曲线分配属性值。 在运行Spring应用程序时,我们可以将配置文件设置为:

-Dspring.profiles.active=dev

绑定YAML配置:

访问YAML属性的一种方法是使用@Value(“ $ {property}”)批注。 但是,还有另一种流行的方法可以确保强类型的Bean统治并验证我们的应用程序配置。

为此,我们将创建一个@ConfigurationProperties类,该类映射一组相关属性:

@ConfigurationProperties("server")
public class ServerProperties {private String url;private final App app = new App();public App getApp() {return app;}//getter and setter for urlpublic static class App {private String name;private String threadCount;private List<String> users = new ArrayList<>();//getters and setters}}

请注意,我们可以创建一个或多个@ConfigurationProperties类。

现在让我们定义AppConfig类:

@Configuration
@EnableConfigurationProperties(ServerProperties.class)
public class ApplicationConfig {...}

在这里,我们提到了要在@EnableConfigurationProperties批注中注册的属性类的列表。

访问YAML属性:

现在,我们可以通过使用我们创建的@ConfigurationProperties Bean来访问YAML属性。 我们将像注入任何常规Spring bean一样注入这些属性bean:

@Service
public class AppService {@Autowiredprivate ServerProperties config;public void printConfigs() {System.out.println(this.config.getUrl());System.out.println(this.config.getApp().getName());System.out.println(this.config.getApp().getThreadCount());System.out.println(this.config.getApp().getUsers());}
}

然后,我们可以使用AppRunner来启动我们的Spring应用程序,并调用ou r printConfigs()方法。 我们的应用程序将根据活动的弹簧轮廓打印出属性值。

结论:

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

翻译自: https://www.javacodegeeks.com/2019/05/spring-boot-yaml-configuration.html

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

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

相关文章

千兆网综合布线系统的线缆选型

综合布线系统包含建筑群布线子系统、建筑物主干布线子系统、水平布线子系统&#xff08;包含工作区电缆&#xff09;三大布线子系统。千兆网综合布线系统除具有一般快速以太网综合布线系统设计的特点之外&#xff0c;更重要的是要合理选择UTP、光缆及接插件。 1、光缆的选择 光…

hibernate数据类型_Hibernate类型初学者指南

hibernate数据类型基本映射概念 学习Hibernate时&#xff0c;许多人喜欢跳到父子关联&#xff0c;而无需掌握对象关系映射的基础知识。 在开始对实体关联进行建模之前&#xff0c;了解各个实体的基本映射规则非常重要。 Hibernate类型 Hibernate类型是SQL类型和Java原语/对象类…

如何快速区分单模与多模光纤收发器?

现如今&#xff0c;光纤收发器的应用范围是越来越广泛了&#xff0c;但是市场上大多数品牌的光纤收发器外观都差不多&#xff0c;那么&#xff0c;我们在使用光纤收发器的过程中该如何辨别单模和多模光纤收发器呢&#xff1f;接下来就跟随飞畅科技的小编一起来详细了解下吧&…

什么是HDMI光纤延长器?其应用场合有哪些?

在信号数据传输中&#xff0c;我们常常听到的都是光模块、光纤、光缆等器件&#xff1b;在本文中&#xff0c;杭州飞畅科技给大家介绍的是另外一款数据传输产品——光纤延长器。那么&#xff0c;到底什么是光纤延长器呢&#xff1f;它应用场合有哪些呢&#xff1f;接下来我们就…

Spring与Rails的jQuery UJS

我一直想尝试一下是否可以在Spring Boot项目中使用Rails的jQuery UJS 。 jquery-ujs中的UJS代表不引人注目JavaScript 。 我非常喜欢UJS如何将事件处理程序连接到标记有HTML5 data-*属性的合格DOM元素。 我发现自己希望看到更多在Spring Boot Web应用程序中使用的这种方法。 我…

什么是VGA光纤收发器?

采用先进的非压缩数字高清视频和高速数字光纤传输技术&#xff0c;可以轻松地将计算机主机、高清视频信号源、高清DVD/DVR等设备输出的各种分辨率的VGA高清视频信号长距离传输到远端的器件。那么&#xff0c;VGA光纤收发器的产品特点及技术参数有哪些呢&#xff1f;接下来我们就…

akka使用_使用Akka简化交易系统

akka使用我的同事正在开发一种交易系统&#xff0c;该系统可以处理大量的传入交易。 每笔交易都涵盖一种Instrument &#xff08;例如债券或股票&#xff09;&#xff0c;并且具有某些&#xff08;现在&#xff09;不重要的属性。 他们坚持使用Java&#xff08;<8&#xff0…

浅析HDMI1.4光纤延长器的工作原理和应用领域

HDMI光纤延长器是用来延长信号的传输器件&#xff0c;解决HDMI音视频信号无法远距离传输的问题&#xff0c;且保证信号传输的质量。那么&#xff0c;HDMI光纤延长器的工作原理是什么&#xff1f;HDMI光纤延长器有哪些应用呢&#xff1f;接下来就由飞畅科技的小编来为大家详细介…

Java中的模板方法模式

模板方法模式是一种行为模式&#xff0c;建议在超类中更一般地定义算法。 该算法是在称为模板方法的方法中定义的。 子类仅定义更具体的算法步骤的实现。 使用这种设计模式的好处是&#xff0c;算法后面的任何更改只会影响超类中的代码。 此外&#xff0c;它还可以提高代码的可…

什么是单模单纤/双纤光纤收发器?

光纤收发器&#xff0c;是一种将短距离的双绞线电信号和长距离的光信号进行互换的以太网传输媒体转换单元&#xff0c;按其所需主要分为单纤光纤收发器和双纤光纤收发器&#xff0c;接下来我们就来详细介绍下什么是单模单纤/双纤光纤收发器&#xff1f;单模单纤和单模双纤光纤收…

什么是以太网光纤收发器,其产品特点和技术参数都有哪些?

以太网光纤收发器是一款提供以太网数据信号到光纤数据信号的双向透明转换器&#xff0c;可以将以太网信号通过光纤线路传输突破传输距离100米的限制&#xff0c;使得以太网网络覆盖得到极大的延伸。光纤收发器的出现&#xff0c;确保能够顺畅的将电信号与光纤信号相互转换&…

什么是CAN总线中继器?

CAN网桥&#xff08;Bridge&#xff09;是一个智能的中继器。使用CAN网桥对设备进行互连&#xff0c;克服了CAN总线结点个数及通信距离的物理限制&#xff0c;能有效扩充CAN网络的结点总数&#xff0c;延长通信距离。今天&#xff0c;飞畅科技的小编为大家详细介绍下CAN总线中继…

java百里香_百里香Spring测试的意见

java百里香我最近在基于Spring的Web应用程序中转换为thymeleaf以进行视图模板化&#xff0c;而不是jsp。 百里香叶文档中关于为什么百里香叶在jsp上为什么能保持水分的所有争论&#xff0c;我肯定被卖掉了。 除了能够预览模板之外&#xff0c;对我来说&#xff0c;主要原因之一…

一文读懂工业设备的两种通讯方式:现场总线和工业以太网

随着传统制造企业正在加快智能制造转型的进程&#xff0c;工业互联网迅速在全世界范围内兴起。在工业互联网的技术构架中&#xff0c;通过各类通讯方式接入不同设备、系统和产品&#xff0c;来采集海量数据是其重要的一环。本文将重点介绍工业底层设备的两种通讯方式&#xff1…

Java中的中介器设计模式

在本教程中&#xff0c;我们将学习一种行为模式&#xff0c;该行为模式将促进彼此通信的多个对象之间的松散耦合。 Mediator设计模式背后的想法是拥有一个中心对象&#xff0c;该对象封装了一组对象之间的交互方式。 在调解器模式中&#xff0c;我们在称为调解器的单独类中提取…

什么是中国1号信令?

中国1号信令是在电话自动交换网中&#xff0c;我国所用的随路信令的总称&#xff0c;目前在国内长途网和市话中的局间中继线上使用。那么&#xff0c;什么是中国1号信令&#xff1f;中国1号信令的分类又有哪些呢&#xff1f;接下来我们就跟随飞畅科技的小编一起来详细了解下吧&…

如何选购工业级光模块

大家都知道光模块是影响整个网络性能的关键因素&#xff0c;特别是在工业以太网中&#xff0c;网络连接控制的多为大型工业设备&#xff0c;光模块的稳定性尤为重要&#xff0c;那么&#xff0c;我们该如何选购工业级光模块呢&#xff1f;接下来就由飞畅科技的小编来为大家详细…

ejb生命周期_无状态EJB:池化和生命周期

ejb生命周期无状态EJB池和生命周期的概述视图&#xff08;注释&#xff09;。 对新手有用。 。 。 。 。 EJB池&#xff1a;快速概述 EJB实例存储在称为EJB池的位置-这不过是内存中的缓存 。 无状态EJB通常按需实例化&#xff0c;即&#xff0c;当客户端调用Bean上的方法时。…

单E1光端机分类及技术指标详解

单E1光端机是一种将G.703的E1信号调制到光纤上传输的设备。采用大规模集成芯片&#xff0c;电路简单&#xff0c;功耗低&#xff0c;可靠性高&#xff0c;具有完整的告警状态指示和完善的网管功能。那么&#xff0c;单E1光端机分类及技术指标有哪些呢&#xff1f;接下来我们就跟…

将Java类作为子进程运行

我本周需要将Java类&#xff08;而不是jar&#xff09;作为子进程运行。 更准确地说&#xff0c;我想从测试内部产生一个新进程&#xff0c;而不是直接在测试内部运行&#xff08;进程内&#xff09;。 我不认为这是幻想或复杂的事情。 但是&#xff0c;这不是我以前不需要做的…