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的操作实例 ...
随机推荐
- Git回滚代码到某个commit
回退命令: $ git reset --hard HEAD^ 回退到上个版本$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前 $ git rese ...
- python 执行sql得到字典格式数据
本文在提供一种方式,实现执行sql语句 返回字典结果集 # 连接数据库,数据库的,这里使用的setting中的默认设置,在这里不做具体的介绍,不懂的可以百度一下 conn = MySQLdb.conn ...
- python faker 生成随机类型字符串
以前生成测试字符时,用random模块拼来拼去来生成随机串,如姓名,手机,身份证等,还是费一些功夫,不过有了faker模块,一切变得简单起来 基本使用: from faker import Faker ...
- win10 caffe python Faster-RCNN训练自己数据集(转)
一.制作数据集 1. 关于训练的图片 不论你是网上找的图片或者你用别人的数据集,记住一点你的图片不能太小,width和height最好不要小于150.需要是jpeg的图片. 2.制作xml文件 1)L ...
- 手动安装mysql
需要在本机(mac)上装个mysql,看到压缩版的体积最小,结果进入了手工安装的坑(正常有界面可以安装,但安装目录将是/usr/local/mysql),既然入了坑就填上吧. 1.解压到自己选择的目录 ...
- 05Hadoop-左外连接
场景:有两张表,一张用户表(user),交易表(transactions).两张表的字段如下: 两份表数据做个左连接,查询出(商品名,地址)这种格式. 这样就是相当于交易表是左表,不管怎么样数据都要保 ...
- C#中Timer定时器的使用示例
关于C#中timer类 在C#里关于定时器类就有3个: 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类里 3.定义在System.Tim ...
- GraphX学习笔记——可视化
首先自己造了一份简单的社交关系的图 第一份是人物数据,id和姓名,person.txt 1 孙俪 2 邓超 3 佟大为 4 冯绍峰 5 黄晓明 6 angelababy 7 李冰冰 8 范冰冰 第二份 ...
- pyCharm最新激活码(2018激活码)
首先输入新的License sever address 首先尝试处理方法是,针对过期会弹出激活框: 选择 Activate new license with License server (用lice ...
- Laravel 深入理解路由和URL生成
原文地址: Laravel 深入理解路由和URL生成 在模板中我们一般不会直接写死url,而是用url助手生成url,本文介绍一下url助手的使用以及遇到的一些比较头疼的问题. 首先,我们创建了一个路 ...