当前位置:   article > 正文

springboot2.0 配置文件application.properties,application.yml语法详解_application.properties $符号

application.properties $符号

创建一个springboot项目《spring boot2.0 第一个程序《快速开始》》

SpringBoot使用一个全局的配置文件,配置文件名是固定的;

application.properties

application.yml

配置文件的主要作用

修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好的一些默认属性

自定义一些属性,并且注入的spring的容器中

加载级别:优先级由高到底,高优先级的配置会覆盖低优先级的配置;

SpringBoot会从这四个位置全部加载主配置文件;互补配置

  1. –file:./config/
  2. –file:./
  3. –classpath:/config/
  4. –classpath:/

我们还可以通过spring.config.location来改变默认的配置文件位置

加载文件顺序,可以看到,文件可以存放在项目外部,可以项目内部(classpath下),外部的优先级别要高于内部的

外部的文件的优先级别可以参考官网的文档https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/#boot-features-external-config

 

我们来看下yml的语法:先定义一个实体对象

  1. public class Emp {
  2. private String name;
  3. private Integer age;
  4. private List<String> list;
  5. private Map<String, String> map;
  6. //免去getset方法

yml文件的语法:属性和值也是大小写敏感 ,属性与属性之间,需要换行空2格

  1. emp:
  2. #普通的类的数据 使用key: val
  3. name: xiaoli
  4. age: 18
  5. #集合的形式 行内写法 list: [xiaoming,xiaohong]
  6. list:
  7. - xiaoming
  8. - xiaohong
  9. #map 或者对象的写法 行内写法 map: {test01:test01,test02:test02}
  10. map:
  11. test01: test01
  12. test02: test02

1:字面量:普通的值(数字,字符串,布尔)

使用 字段:(空格)值

注意:字符串默认不用加上单引号或者双引号;

"":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思 (例如:xiaoli \n,表示xiaoli 换行)

'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

2:对象、Map(属性和值)(键值对):

对象下,还是使用 字段:(空格)值

3:数组(List、Set):

  1. list:
  2. - xiaoming
  3. - xiaohong
  4. list: [xiaoming,xiaohong]

字段:

    横杠(空格)值

4:还可以使用${}符号,引用已经配置过的属性(包括默认配置以及自定义的配置)

  1. emp:
  2. name: xiaoli
  3. age: 18
  4. list:
  5. ##如果${emp.age}没有值,可以使用${emp.age:19}来指定默认值
  6. - ${emp.age}xiaoming
  7. - xiaohong
  8. map:
  9. test01: test01
  10. test02: test02

5:也可以使用系统定义的一些函数

  1. ${random.value}、${random.int}、${random.long}
  2. ${random.int(10)}、${random.int[1024,65536]}

 

最后把属性注入到这个对象中,使用 @ConfigurationProperties(prefix = "emp")注解,标注在实体类上,并@Component 加入到容器中

  1. @Component
  2. @ConfigurationProperties(prefix = "emp")
  3. public class Emp {
  4. private String name;
  5. private Integer age;
  6. private List<String> list;
  7. private Map<String, String> map;
  8. //免去get和set方法

另外,在之前的《spring 注解@PropertySource 引入文件,@Value读取文件内容,EmbeddedValueResolverAware读取文件内容》中,也可以使用@Value注解,来注入属性的值,当然,两者之间还是有区别的

    @Value获取值和@ConfigurationProperties获取值比较

 @ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持(userName或者user-name)不支持
SpEL不支持支持
JSR303数据校验支持(@Validated注解的支持)不支持
复杂类型封装支持(支持各种嵌套类型,复杂类型)不支持

上述的yml用法,在application.properties中的用法如下:

  1. emp.age=18
  2. emp.list=xiaohong,xiaolan
  3. emp.map.k1=k1
  4. emp.map.k2=k2
  5. ##集合的另一种写法,yml文件,也是支持的
  6. emp.list[0] = xioali
  7. emp.list[1] = xioali

 

更加的详细的,就不介绍了,大家在实际应用中,再发现和探究吧

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/953752
推荐阅读
相关标签
  

闽ICP备14008679号