Spring Boot 配置_yaml语法介绍 day02
一、Spring Boot 的全局配置文件(application.properties、application.yml)
1.这两种配置文件是SpringBoot 支持的对默认配置修改的格式。命名和格式是一样的,不能随意改名。我们来分别说一下这两种格式的配置文件对SpringBoot配置及区别。
这两个配置文件的作用:SpringBoot在底层已经帮我们默认配置好,我们可以通过配置文件来修改默认的配置,如对Tomcat的端口配置等等。
2.首先来说一下的是application.properties这个文件。(我们来修改tomcat端口)

2.1启动主程序,这是tomcat控制台打印的信息

2.2修改成功

3.对于application.yml这个文件而言,修改tomcat端口。(注释掉application.properties的端口配置)
3.1在application.properties同一个路径下新增一个"application.yml",如下图。

添加修改tomcat代码。

运行效果

访问效果(还是一样的效果)

这两种简单的配置比较,application.yml比较简洁、配置简单。推荐使用。以下着重介绍application.yml语法。
二、yaml 语法(大小写敏感)
1.yaml语法的精髓在与对空格的使用,可谓使用得淋漓尽致。
yaml语法主要是K:(冒号后面是空格) V值的形式(注意空格的使用)
空格的另一个重要的使用时对配置文件的层级关系的控制,如:
server:
port: 8090
address: /hello -->这:后都有空格,空格也控制层级关系
2.yaml对不同类型的值的操作:(只要记得 空格是神奇的存在)
对于(数值、字符串、和布尔)对于配置的值是字符串,不用双引号和单引号,直接写就可以了,若使用双引号的话会将特殊字符转义,使用单引号则会原样输出,不会对
特殊字符转义
例如:name: "小二\n 过来"-------------------->会这样输出 小二 换行 过来
name: '小二\n 过来'--------------------->会这样输出 小二 \n 过来(没有变化)
对于K : V形式(对象、Map)键值对类型
方法一、对象和Map占一行,属性和值会在另一行
Person:
name: lcaiqin
age: 23
方法二、将所用配置写在一行里面
Person: {name: lcaiqin,age: 23}
//--->>注意空格的使用
对于数组(List,Set)
方法一、使用- value的形式。如:注意是- 空格 值
Pets:
- dog
- cat
- pig
方法二、使用一行解决。注意是:冒号 空格
Pets: [cat,dog,pig]
三、yaml配置文件的值注入
在实体类中编写如下代码:
@Component //@ConfigurationProperties在Spring容器中运行需要组件的支持
@ConfigurationProperties(prefix = "person") //告诉SpringBoot的所有属性和配置文件映射起来。prefix = "person"指从配置文件的什么位置映射
public class Person { //基本类型
private String name;
private Integer age;
private Boolean Boos; //对象
private Cart cart;
private Map<String,Object> map; //数组
private List<Object> list;
写法一、在application.yml中输入如下代码。
person:
name: 独而不孤
age: 23
Boos: true
cart:
name: 奥迪
color: 白色
map:
k1: v1
k2: v2
list:
- apple
- pear
- eat
写法二、在application.yml中输入如下代码。(一行元素搞定)
person:
name: 独而不孤
age: 23
cart: {name: 奥迪,color: 白色}
list: [apple,pear,eat]
map: {k1: v1,k2: v2}
Boos:true
四、application.properits配置文件注入
bean中代码:
//基本类型
@Value("${person.name}") //使用el表达式,从配置文件中取出
private String name;
@Value("${person.age}")
private Integer age;
private Boolean Boos;
application.propeerties代码:
person.age=23
person.boos=true
person.cart.name=奥迪
person.cart.color=白色
person.name=独而不孤
person.map.k1=值1
person.map.k2=值2
person.list.list1=apple
运行效果:乱码
解决乱码:"File">>"Settings">>"Editor">>"File Encodings"

这样就可以了。
五、@Value和@ConfigurationProperties的比较(@ConfigurationPropertis要配合@Component)
@ConfigurationPropertis |
@Value |
|
功能上 |
对所有的属性进行注入值 |
一个一个注入值 |
语法复杂程度 |
简单(可以一行一个一元素) |
元素冗余 |
SpEL |
不支持 |
支持 |
JSR303数据校验 |
支持 |
不支持 |
复杂类型封装 |
支持 |
不支持 |
个人觉得(除了需要对个别的属性赋值之外)都建议使用@ConfigurationProperties
1.对JSR303数据校验
@Component
@ConfigurationProperties(prefix = "person")
@Validated -->加入此标签
public class Person { //基本类型
private String name;
private Integer age;
private Boolean Boos;
运行效果

Spring Boot 配置_yaml语法介绍 day02的更多相关文章
- Spring Boot 配置元数据指南
1. 概览 在编写 Spring Boot 应用程序时,将配置属性映射到 Java bean 上是非常有用的.但是,记录这些属性的最好方法是什么呢? 在本教程中,我们将探讨 Spring Boot C ...
- Spring Boot配置过滤器的两种方式
过滤器(Filter)是Servlet中常用的技术,可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,常用的场景有登录校验.权限控制.敏感词过滤等,下面介绍下Spring Boot配置过 ...
- spring boot配置druid连接池连接mysql
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- Redis篇之操作、lettuce客户端、Spring集成以及Spring Boot配置
Redis篇之操作.lettuce客户端.Spring集成以及Spring Boot配置 目录 一.Redis简介 1.1 数据结构的操作 1.2 重要概念分析 二.Redis客户端 2.1 简介 2 ...
- Spring Boot配置,读取配置文件
Spring Boot配置,读取配置文件 一.配置Spring Boot 1.1 服务器配置 1.2 使用其他Web服务器 1.3 配置启动信息 1.4 配置浏览器显示ico 1.5 Yaml语法 1 ...
- Spring Boot -- 配置切换指南
一般在一个项目中,总是会有好多个环境.比如: 开发环境 -> 测试环境 -> 预发布环境 -> 生产环境 每个环境上的配置文件总是不一样的,甚至开发环境中每个开发者的环境可能也会有一 ...
- Spring Boot 配置优先级顺序
一般在一个项目中,总是会有好多个环境.比如: 开发环境 -> 测试环境 -> 预发布环境 -> 生产环境 每个环境上的配置文件总是不一样的,甚至开发环境中每个开发者的环境可能也会有一 ...
- spring boot 配置注入
spring boot配置注入有变量方式和类方式(参见:<spring boot 自定义配置属性的各种方式>),变量中又要注意静态变量的注入(参见:spring boot 给静态变量注入值 ...
- Spring boot配置多个Redis数据源操作实例
原文:https://www.jianshu.com/p/c79b65b253fa Spring boot配置多个Redis数据源操作实例 在SpringBoot是项目中整合了两个Redis的操作实例 ...
随机推荐
- nginx(二)支持websocket配置
在默认的配置nginx.conf文件中做如下配置改动 一.http域的设置 http { include mime.types; default_type application/octet-stre ...
- 刨根问底 | Elasticsearch 5.X集群多节点角色配置深入详解【转】
转自:https://blog.csdn.net/laoyang360/article/details/78290484 1.问题引出 ES5.X节点类型多了ingest节点类型. 针对3个节点.5个 ...
- centos 7 下的 service部署
在centos 7下部署service一般涉及到jar包部署, service脚本. 数据存贮路径, log存贮路径 jar包部署 /usr/local/app/app1/app1.jar servi ...
- springboot2.x接口返回中文乱码
@Configuration public class GlobalConversConfiguration extends WebMvcConfigurationSupport { @Bean pu ...
- hdoj:2084
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- redis 集群搭建碰到的问题
make PREFIX=/usr/local/redis install把编译好的redis 安装到指定目录下. redis.conf文件从源码目录拷贝到/usr/local/redis(安装目录)下 ...
- 【转载】Docker 安装后 报 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 解决办法
Docker Docker 安装后 报 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docke ...
- [微信小程序] 通过快速启动demo分析小程序入门关键点
(1)小程序基础结构 下图是在开发者工具通过快速启动模式创建的小程序的目录结构 可以看到,小程序中主要包含有4中类型不同的文件 .json 后缀的 JSON 配置文件 .wxml 后缀的 WXML 模 ...
- 深入理解Java类加载器(ClassLoader)
深入理解Java类加载器(ClassLoader) Java学习记录--委派模型与类加载器 关于Java类加载双亲委派机制的思考(附一道面试题) 真正理解线程上下文类加载器(多案例分析) [jvm解析 ...
- jq 日期区间处理
<html lang="en"><head> <meta charset="UTF-8"> <title>Tit ...

