【浅学Java】SpringBoot 配置文件
创始人
2024-03-20 15:38:49
0

SpringBoot 配置文件

  • 1. 配置文件的作用
  • 2. 配置文件的格式
    • .properties配置文件的格式
    • .properties配置文件的缺点
    • .yml配置文件的格式
    • .yml配置文件的优点
  • 3. 配置文件的分类
    • 3.1 两种类型配置文件
    • 3.2 用户自定义配置项
  • 4. 配置信息读取
    • 4.1 自定义配置信息读取
    • 4.2 系统配置信息读取
    • 4.3 特别注意_Value中的数据格式
    • 4.4 yml中字符串修饰符的问题
  • 5. 配置对象以及读取对象
  • 6. 配置集合以及读取集合
  • 7. 设置不同环境的配置项

1. 配置文件的作用

整个项目所有的重要数据都是在配置文件中配置的,比如:

  1. 数据库中的连接信息
  2. 项目的启动端口

2. 配置文件的格式

Spring Boot 配置文件的格式主要有两种:

  1. properties
  2. yml

如下所示:
在这里插入图片描述

注意:

  1. 约定配置文件的文件名都是用application开头
  2. 当两者格式的配置文件同时存在时,约定 .properties 的优先级大于 .yml

.properties配置文件的格式

实例:
在这里插入图片描述

.properties配置文件的缺点

可以看出, properties 有明显的缺,就是有挺多的冗余信息:
在这里插入图片描述

.yml配置文件的格式

实例:
在这里插入图片描述

.yml配置文件的优点

  1. 书写简便,解决了.properties配置文件信息冗余的问题
  2. yml 是⼀个可读性⾼,写法简单、易于理解,它的语法和 JSON 语⾔类似。
  3. yml ⽀持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
  4. yml ⽀持更多的编程语⾔,它不⽌是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、JavaScript、Perl 中

3. 配置文件的分类

3.1 两种类型配置文件

  1. SpringBoot内置的配置项,比如server.port
  2. 用户自定义得配置项

3.2 用户自定义配置项

# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~

4. 配置信息读取

4.1 自定义配置信息读取

首先在配置信息中,配置一个自定义信息:
在这里插入图片描述
然后读取:

@RestController
public class TestController {@Value("${mykey.key1}")private String mykey;@RequestMapping("/hi")public String sayhi(){return "hi,"+mykey;}
}

打印结果:
在这里插入图片描述

4.2 系统配置信息读取

以项目端口号为实例,先配置项目端口号:
在这里插入图片描述
然后读取:

@RestController
public class TestController {@Value("${server.port}")private String port;@RequestMapping("/hi")public String sayhi(){return "hi,"+port;}
}

打印结果:
在这里插入图片描述

4.3 特别注意_Value中的数据格式

在这里插入图片描述

4.4 yml中字符串修饰符的问题

在这里插入图片描述
yml配置如果使用了双引号修饰value值,那么value值就会触发其本身的作用,比如:\n表示换行。

5. 配置对象以及读取对象

先在 .yml 配置文件中配置 student对象:
在这里插入图片描述
创建和配置文件相对于的Student类:

注意:要想上面的ConfigurationProperties能成功绑定,就必须是这个类具Setter方法

@Component//将该对象存储在Spring当中
@ConfigurationProperties(prefix = "student")//把配置文件中的student配置赋值给当前的对象
@Data//使该类中的变量有Getter和Setter方法,
public class Student {private int id;private String name;private Integer age;
}

运行测试类:

@RestController
public class TestController {@Autowiredprivate Student student;@RequestMapping("/hi")public String sayhi(){return "id:"+student.getId()+" | name:"+student.getName();}
}

运行结果:
在这里插入图片描述

6. 配置集合以及读取集合

在配置文件中创建一个集合:
在这里插入图片描述
创建和配置文件中相对于的类:

@Component
@ConfigurationProperties(prefix = "dbtypes")
@Data
public class DBTypes {private List name;//这个名字必须和配置文件中的name所对应
}

运行测试类:

@RestController
public class TestController {@Autowiredprivate DBTypes dbTypes;@RequestMapping("/hi")public String sayhi(){return dbTypes.toString();}
}

运行结果:
在这里插入图片描述

7. 设置不同环境的配置项

创建一下配置文件:
在这里插入图片描述
每个配置文件中都配置一个端口号,然后在 application.yml 中选择某一个配置,如application-dev.yml:
在这里插入图片描述

那么启动项目,项目将在8888端口运行,即dev端口:
在这里插入图片描述

需要注意的是:在创建各个环境的配置文件时,必须以 application- 开头,其后面跟着字符就是环境名称,在 application.yml 中选择时,写的就是它。即:
在这里插入图片描述

这种方式就可以控制程序在不同环境中运行,比如果dev环境使用的时数据库A,test环境数据库B,切换这两者时,就只需要在application.yml中重写选择就行,就不需要重新写,即用啥环境就选择啥环境

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...