YAML配置,spring boot 配置文件
1 概念
YAML是一种人们可以轻松阅读的数据序列化格式,并且它非常适合对动态编程语言中使用的数据类型进行编码。YAML是YAML Ain't Markup Language简写,和GNU("GNU's Not Unix!")一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。YAML不是XML。它可以用作数据序列,配置文件,log文件,Internat信息和过滤。
2 优点
YAML的可读性好。 
YAML和脚本语言的交互性好。 
YAML使用实现语言的数据类型。 
YAML有一个一致的信息模型。 
YAML易于实现。
3 YAML的适用范围
由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript。除了Java,其他都是脚本语言. 
YAML比较适合做序列化。因为它是宿主语言数据类型直转的。 
YAML做配置文件也不错。比如Ruby on Rails的配置就选用的YAML。对ROR而言,这很自然,也很省事. 
由于兼容性问题,不同语言间的数据流转建议现在不要用YAML. 
4 YAML不足
YAML和XML不同,没有自己的数据类型的定义,而是使用实现语言的数据类型。这一点,有可能是出奇制胜的地方,也可能是一个败笔。如果兼容性保证的不好的话,YAML数据在不同语言间流转会有问题。
假如兼容性没问题的话,YAML就太完美了。轻巧,敏捷,高效,简便,通用。
YAML与properties的不同
YAML的配置文件格式例如:
environments:
dev:
url: http://dev.bar.com
name: Developer Setup
prod:
url: http://foo.bar.com
name: My Cool App
与其等价的properties:
environments.dev.url=http://dev.bar.com
environments.dev.name=Develop Setup
environments.prod.url=http://foo.bar.com
environments.prod.name=My Cool App
通过YAML的配置方式我们可以看出,配置字符量比properties少了很多,且结构变得更清晰。
自定义参数
除了可以在Spring Boot的配置文件中设置各个starter模块中预定义的配置属性,我们还可以在配置文件中定义一些我们需要的自定义属性。比如在application.properties中添加:
book.name=SpringCloudInAction
book.author=ZhaiYongchao
然后,在应用中可以通过@Value注解来加载这些自定义的参数,比如:
@Component
public class Book{
@Value(“${book.name}”)
private String name;
@Value(“${book.author}”)
private String author;
//省略getter和setter
}
然后再Spring Boot的主类中指出该类所在包即可。
@Value注解加载属性时可以支持两种表达式来进行配置:
- 一种是上面介绍的PlaceHolder方式,格式为${…},大括号内为PlaceHolder.
- 另一种是使用SpEL表达式,格式为#{…},大括号内为SpEL表达式。
参数引用
book.name=Spring Cloud
book.author=ZhaiYongchao
book.desc=${book.author} is writing 《${book.name}》
这样,book.desc的值为:ZhaiYongchao is writing 《Spring Cloud》。
使用随机数
在配置文件中使用${random.int}即可获得一个随机的int型数据。
| 名称 | 描述 | 
| ${random.value} | 取得随机字符串 | 
| ${random.int} | 取得随机int型数据 | 
| ${random.long} | 取得随机long型数据 | 
| ${random.int(10)} | 取得10以内的随机数 | 
| ${random.int[10,20]} | 取得10~20的随机数 | 
命令行参数
我们使用java -jar命令来启动一个spring boot应用,启动时,可以设置参数,例如:
java –jar xxx.jar --server.port=8081
该命令直接以命令行的方式指定了spring boot应用启动的端口号为8081.
以命令行的方式启动spring boot应用时,连续的--就是对application.properties中的属性进行赋值的标识。
多环境配置
上面通过命令行的方式修改应用的配置文件,当应用特别多时,这样的方式也许并不太好。因此需要多环境配置。
关于profile更多内容见《Spring 3.1新特性之一:spring注解之@profile》
方式一:
YAML还可以在一个单个文件中通过使用spring.profiles属性来定义多个不同的环境配置。例如:
server:
port:8881
---
spring:
profiles:test
server:
port:8882
----
spring:
profiles: prod
server:
port:8883
当指定为test环境时,server.port将使用8882端口;prod环境时,server.port将使用8883端口;没有指定时使用8881端口。
方式二:
YAML将属性加载到内存中保存的是有序的,所以当配置文件中的信息需要具备顺序含义时,YAML的配置方式比起properties配置文件更有优势。
在spirng boot中,多环境配置的文件名需要满足 application-{profile}.properties的格式,比如:
- application-dev.properties 开发环境
- application-test.properties 测试环境
- application-prod.properties 生产环境
具体哪个配置文件会被加载,需要在application.properties文件中通过string.profiles.active属性来设置,其值对应配置文件中的{profile}值(也可以使用java -jar xxx.jar --spring.profiles.active命令指定需要加载的配置文件)。如spring.profiles.active=test就会加载application-test.properties配置文件内容。
加载顺序


监控与管理
简短的前言
在为服务架构中,通过将庞大的单体系统拆分成多个提供不同服务的应用。虽然各个应用的内部逻辑因分解而得以简化,但由于部署应用的数量成倍增长,使得系统的维护复杂度大大提升。
随着应用的不断增加,系统集群中出现故障的次数也越来越多,虽然在高可用机制的保护下,个别故障不会影响系统的对外服务,但是这些频繁出现的鼓掌需要被及时发现和处理才能长期保证系 统处于健康可用状态。为了达到这个目的,我们需要一套自动化的监控运维机制,该机制要能够不间断地收集各个微幅务应用的各项指标情况,并根据这些基础指标信息来制定监控和预警规则。
初始actuator
引入该模块能够自动为spring boot构建的应用提供一系列用于监控的端点。Spring Cloud在实现各个为服务组件的时候,进一步为该模块做了不少扩展。比如,为原生端点增加了更多的指标和度量信息。
引入actuator
- 在现有的spring boot应用的pom.xml文件中引入spring-boot-starter-actuator依赖即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.增加该依赖后重新启动应用。此时可以在控制台中看到如下所示:

上图显示了一批端点定义,这些端点并非我们在程序中定义的,而是由spring-boot-starter-actuator模块根据应用依赖和配置自动创建出来的监控和管理端点。端点具体还以不再说明,可以自行百度。
YAML配置,spring boot 配置文件的更多相关文章
- spring boot 配置文件properties和YAML详解
		spring boot 配置文件properties和YAML详解 properties中配置信息并获取值. 1:在application.properties配置文件中添加: 根据提示创建直接创建. ... 
- Spring Boot 配置文件和命令行配置
		Spring Boot 属于约定大于配置,就是说 Spring Boot 推荐不做配置,很多都是默认配置,但如果想要配置系统,使得软件符合业务定义,Spring Boot 可以通过多种方式进行配置. ... 
- Spring Boot 配置文件详解
		Spring Boot配置文件详解 Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件.他们的作用都是修改Spring Boot自动配置的默认值.相对于prop ... 
- Springboot 系列(二)Spring Boot 配置文件
		注意:本 Spring Boot 系列文章基于 Spring Boot 版本 v2.1.1.RELEASE 进行学习分析,版本不同可能会有细微差别. 前言 不管是通过官方提供的方式获取 Spring ... 
- Spring Boot配置文件大全
		Spring Boot配置文件大全 ############################################################# # mvc ############## ... 
- 黑马_13 Spring Boot:04.spring boot 配置文件
		13 Spring Boot: 01.spring boot 介绍&&02.spring boot 入门 04.spring boot 配置文件 05.spring boot 整合其他 ... 
- Spring Boot 配置文件 – 在坑中实践
		摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 仓廪实而知礼节,衣食足而知荣辱 - 管仲 』 本文提纲 一.自动配置 二.自定义 ... 
- 史上最全的Spring Boot配置文件详解
		Spring Boot在工作中是用到的越来越广泛了,简单方便,有了它,效率提高不知道多少倍.Spring Boot配置文件对Spring Boot来说就是入门和基础,经常会用到,所以写下做个总结以便日 ... 
- Spring Boot学习——Spring Boot配置文件application
		Spring Boot配置文件有两种格式: application.properties 和 application.yml.两种配置文件只需要使用一个. 这两种配置文件的语法有些区别,如下 1. a ... 
- Spring Boot 配置文件密码加密两种方案
		Spring Boot 配置文件密码加密两种方案 jasypt 加解密 jasypt 是一个简单易用的加解密Java库,可以快速集成到 Spring 项目中.可以快速集成到 Spring Boot 项 ... 
随机推荐
- sudo操作
			在非root权限下,无法执行 vim /etc/profile 并保存,提示如下错误: "profile" E212: Can't open file for writing Pr ... 
- ISCC的 Misc——WP
			比赛已经结束了,自己做出来的题也不是很多,跟大家分享一下 Misc 第一题:What is that? 下载链接; 打开 解压 是一个图片 因为分值很少所以题和简单 观察图片是一个向下指的手 说明fl ... 
- JDBC事务的处理-----模拟银行转账业务
			定义: 数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成. 概要: 一个数据库事务通常包含了一个序列的对数据库的读/写操作.它的存在包含有以下两个目的: ... 
- katalog-sync: Reliable Integration of Consul and Kubernetes
			转自:https://medium.com/wish-engineering/katalog-sync-reliable-integration-of-consul-and-kubernetes-eb ... 
- Bow & Arrow 学习
			using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; ... 
- php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。
			php-cgi 是运行php,php-fpm是守护php-cgi进程 nginx配置目录运行php location ~ \.php$ { ... 
- create-react-app-typescript 知识点
			github:https://github.com/wmonk/create-react-app-typescript 报错:Import sources within a group must be ... 
- 高级OPENGL, 利用uniform块接口
			1.找到需要的uniform块的索引, 将程序对象的该uniform块索引绑定uniform 缓冲对象的绑定点 2.建立uniform缓冲对象,对象绑定GL_UNIFORM_BUFFER缓冲目标,为缓 ... 
- PySpark理解wordcount.py
			在本文中, 我们借由深入剖析wordcount.py, 来揭开Spark内部各种概念的面纱.我们再次回顾wordcount.py代码来回答如下问题 对于大多数语言的Hello Word示例,都有mai ... 
- hadoop本地集群搭建
			网络配置 1.永久性配置CentOS网络 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=y ... 
