学习网站建设有前景没浙江住房和建设网站首页
news/
2025/10/4 15:26:17/
文章来源:
学习网站建设有前景没,浙江住房和建设网站首页,专业网站设计哪家好,南京做网站建设有哪些yaml语法学习
1、配置文件
SpringBoot使用一个全局的配置文件 #xff0c; 配置文件名称是固定的 application.properties 语法结构 #xff1a;keyvalue application.yml 语法结构 #xff1a;key#xff1a;空格 value
配置文件的作用#xff1a;修改SpringBoot自动…yaml语法学习
1、配置文件
SpringBoot使用一个全局的配置文件 配置文件名称是固定的 application.properties 语法结构 keyvalue application.yml 语法结构 key空格 value
配置文件的作用修改SpringBoot自动配置的默认值因为SpringBoot在底层都给我们自动配置好了比如我们可以在配置文件中修改Tomcat 默认启动的端口号
server:port: 8081SpringBoot内置属性查询官方文档地址 2、YAML/YML
yaml概述 YAML是 “YAML Ain’t a Markup Language” YAML不是一种标记语言的递归缩写。在开发的这种语言时YAML 的意思其实是“Yet Another Markup Language”仍是一种标记语言 这种语言以数据作为中心而不是以标记语言为重点 以前的配置文件大多数都是使用xml来配置比如一个简单的端口配置我们来对比下yaml和xml 传统xml配置 serverport8081port
/serveryaml配置 serverprot: 8080yaml基础语法
说明语法要求严格 空格不能省略 以缩进来控制层级关系只要是左边对齐的一列数据都是同一个层级的 属性和值的大小写都是十分敏感的 #号表示注释
字面量普通的值 [ 数字布尔值字符串 ] 字面量直接写在后面就可以 字符串默认不用加上双引号或者单引号k: v 注意 “ ” 双引号不会转义字符串里面的特殊字符 特殊字符会作为本身想表示的意思 比如 name: “kuang \n shen” 输出 kuang 换行 shen ‘’ 单引号会转义特殊字符 特殊字符最终会变成和普通字符一样输出 比如 name: ‘kuang \n shen’ 输出 kuang \n shen
对象、Map键值对
#对象、Map格式
k: v1:v2:在下一行来写对象的属性和值得关系注意缩进比如
student:name: limingage: 3行内写法
student: {name: qinjiang,age: 3}数组和对象数组 List、set
用 - 值表示数组中的一个元素,比如
#数组
pets:- cat- dog- pig
#对象数组
users:- name: Tomage: 4- name: Jerryage: 5行内写法
#数组
pets: [cat,dog,pig]
#对象数组
users[{name: Tom,age: 4},{name: Jerry,age: 5}]注入配置文件 yaml文件更强大的地方在于他可以给我们的实体类直接注入匹配值 yaml注入配置文件 在springboot项目中的resources目录下新建一个文件 application.yml 编写一个实体类 Dog package nuc.ss.pojo;Component //注册bean到容器中
public class Dog {private String name;private Integer age;//有参无参构造、get、set方法、toString()方法
}思考我们原来是如何给bean注入属性值的Value给狗狗类测试一下 Component //注册bean
public class Dog {Value(阿黄)private String name;Value(18)private Integer age;
}在SpringBoot的测试类下注入狗狗输出一下 SpringBootTest
class Springboot02ConfigApplicationTests {Autowiredprivate Dog dog;Testvoid contextLoads() {System.out.println(dog);}} 结果成功输出Value注入成功这是我们原来的办法对吧。 我们在编写一个复杂一点的实体类Person 类 Component //注册bean到容器中
public class Person {private String name;private Integer age;private Boolean happy;private Date birth;private MapString,Object maps;private ListObject lists;private Dog dog;//有参无参构造、get、set方法、toString()方法
}我们来使用yaml配置的方式进行注入大家写的时候注意区别和优势我们编写一个yaml配置 person:name: limingage: 3happy: falsebirth: 2000/01/01maps: {k1: v1,k2: v2}lists:- code- girl- musicdog:name: 旺财age: 1我们刚才已经把person这个对象的所有值都写好了我们现在来注入到我们的类中 /*
ConfigurationProperties作用
将配置文件中配置的每一个属性的值映射到这个组件中
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix “person” : 将配置文件中的person下面的所有属性一一对应
*/
Component
ConfigurationProperties(prefix person)
public class Person {private String name;private Integer age;private Boolean happy;private Date birth;private MapString,Object maps;private ListObject lists;private Dog dog;//有参无参构造、get、set方法、toString()方法
} 确认以上配置都OK之后我们去测试类中测试一下 SpringBootTest
class Springboot02ConfigApplicationTests {Autowiredprivate Person person;Testvoid contextLoads() {System.out.println(person);}} 结果所有值全部注入成功
加载指定的配置文件
PropertySource 加载指定的配置文件configurationProperties默认从全局配置文件中获取值 我们去在resources目录下新建一个person.properties文件 namekuangshen然后在我们的代码中指定加载person.properties文件 PropertySource(value classpath:person.properties)
Component //注册bean
public class Person {Value(${name})private String name;......
}再次输出测试一下指定配置文件绑定成功
配置文件占位符
配置文件还可以编写占位符生成随机数
person:name: liming${random.uuid}age: ${random.int}happy: falsebirth: 2020/07/13maps: {k1: v1,k2: v2}lists:- code- music- girldog:name: ${person.hell:hello}_旺财age: 3回顾properties配置
我们上面采用的yaml方法都是最简单的方式开发中最常用的也是springboot所推荐的那我们来唠唠其他的实现方式道理都是相同的写还是那样写配置文件除了yml还有我们之前常用的properties 我们没有讲我们来唠唠
【注意】properties配置文件在写中文的时候会有乱码 我们需要去IDEA中设置编码格式为UTF-8settings–FileEncodings 中配置
对比小结
Value这个使用起来并不友好我们需要为每个属性单独注解赋值比较麻烦我们来看个功能对比图
ConfigurationPropertiesValue功能批量注入配置文件中的属性一个个指定松散绑定支持不支持SpEL不支持支持JSR303数据校验支持不支持复杂类型封装支持不支持 ConfigurationProperties只需要写一次即可 Value则需要每个字段都添加 松散绑定这个什么意思呢? 比如我的yml中写的last-name这个和lastName是一样的 - 后面跟着的字母默认是大写的。这就是松散绑定。 JSR303数据校验 这个就是我们可以在字段是增加一层过滤器验证 可以保证数据的合法性 复杂类型封装yml中可以封装对象 使用value就不支持
结论 配置yml和配置properties都可以获取到值 强烈推荐 yml 如果我们在某个业务中只需要获取配置文件中的某个值可以使用一下 value 如果说我们专门编写了一个JavaBean来和配置文件进行一一映射就直接configurationProperties不要犹豫
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927274.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!