SpringBoot系列之SpringBoot配置详解

阳光穿透心脏的1/2处 2023-10-09 15:16 83阅读 0赞

SpringBoot配置文件详解

文章目录

  • SpringBoot配置文件详解
  • 一、SpringBoot配置文件分类
  • 二、SpringBoot配置-yaml(yml)基本语法
    • 1.概念
    • 2.语法特点
  • 三.SpringBoot配置-yaml数据格式
  • 四.SpringBoot配置-获取配置文件中的数据
  • 五.SpringBoot配置-项目内部配置文件加载顺序

一、SpringBoot配置文件分类

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。

  1. 默认配置文件名称:application.properties
  2. 在同一级目录下优先级为:properties>yml > yaml

例如:配置内置Tomcat的端口

properties:

  1. server.port=8081

yml:

  1. server:
  2. port:8081

二、SpringBoot配置-yaml(yml)基本语法

1.概念

YAML(YML)是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入。

2.语法特点

• 大小写敏感
• 数据值前边必须有空格,作为分隔符
• 使用缩进表示层级关系
• 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的空格数目可能不同,导致层次混乱)。
• 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
• ‘’#“ 表示注释,从这个字符一直到行尾,都会被解析器忽略。
代码如下(示例):

  1. server:
  2. port: 8081
  3. address:
  4. name: lp
  5. msg1: 'hello \n world' #单引忽略转义字符
  6. msg2: "hello \n world" #双引识别转义字符

三.SpringBoot配置-yaml数据格式

对象(map):
键值对的集合。

  1. person:
  2. name: lp
  3. # 行内写法
  4. person:{
  5. name: lp}

纯量:
单个的、不可再分的值

  1. msg2: "hello \n world" #双引识别转义字符

数组:一组按次序排列的值

  1. address:
  2. - beijing
  3. - shanghai
  4. # 行内写法
  5. address: [beijing,shanghai]

四.SpringBoot配置-获取配置文件中的数据

1.使用@Value注解 常用

  1. @Value("${name}")
  2. private String name;

2.Evironment

  1. @Autowired
  2. private Environment env;
  3. System.out.println(env.getProperty("person.name"));

3. @ConfigurationProperties
注意:prefix一定要写

  1. @Component
  2. @ConfigurationProperties(prefix ="person")
  3. public class Person{
  4. privateString name;
  5. privateint age;
  6. private String[] address;
  7. public Stringget Name(){
  8. return name;
  9. }
  10. public void setName(String name){
  11. this.name = name;
  12. }
  13. public int getAge(){
  14. return age;
  15. }
  16. public void setAge(int age){
  17. this.age = age;
  18. }
  19. public String[] getAddress(){
  20. return address;
  21. }
  22. public void setAddress(String[] address){
  23. this.address = address;
  24. }
  25. @Override
  26. public String toString(){
  27. return"Person{"+"name='"+ name +'\''+", age="+ age +'}';
  28. }}

修改controller

  1. @Autowired
  2. private Person person;
  3. System.out.println(person);
  4. String[] address = person.getAddress();
  5. for(String s : address){
  6. System.out.println(s);}

使用第三个获取数据时,会有警告,去掉报警提示:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-configuration-processor</artifactId>
  4. <optional>true</optional>
  5. </dependency>

五.SpringBoot配置-项目内部配置文件加载顺序

加载顺序为下文的排列顺序,高优先级配置的属性会生效
• file:./config/:当前项目下的/config目录下
• file:./ :当前项目的根目录
• classpath:/config/:classpath的/config目录
• classpath:/ :classpath的根目录

发表评论

表情:
评论列表 (有 0 条评论,83人围观)

还没有评论,来说两句吧...

相关阅读