


💓 博客主页:从零开始的-CodeNinja之路
⏩ 收录文章:【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理
🎉欢迎大家点赞👍评论📝收藏⭐文章
配置文件主要是为了解决硬编码带来的问题,把可能会发生改变的信息,放在⼀个集中的地方,当我们启
动某个程序时,应用程序从配置文件中读取数据,并加载运行.
使用配置文件,可以使程序完成用户和应用程序的交互,或者应用程序与其他应用程序的交互
Spring Boot 配置文件
SpringBoot支持并定义了配置文件的格式,也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的
目的.
很多项目或者框架的配置信息也放在配置文件中,比如:
数据库连接信息 为了更方便简单的访问数据库,出现了⼀些持久层框架,其实就是对JDBC进行了更深层次的封装.让用
⼾通过简单⼏行代码就可完成数据库的访问.但是不同的应用程序访问的数据库不同,这些持久层框 架就需要⽀持用户可以⾃定义配置数据库的连接信息
SpringBoot配置文件有以下三种:
特别注意:
properties配置文件是最早期的配置文件格式,也是创建SpringBoot项目默认的配置文件
properties是以键值的形式配置的,key和value之间是以"="连接的,如:
// 配置项目端口号
server.port=8080
//配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?
characterEncoding=utf8&useSSL=false
//配置数据库的用户名
spring.datasource.username=root
//配置数据库的密码
spring.datasource.password=root
如果在项目中,想要主动的读取配置文件中的内容,可以使用 @Value 注解来实现。
@Value 注解使用" ${} "的格式读取,如下代码所示:
properties配置如下:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class PropertiesController {
@Value("${mykey.key1}")
private String key1;
@RequestMapping("/key")
public String key(){
return "读取到值:"+key1;
}
}
properties配置是以key-value的形式配置的,会产生很多的代码冗余,如下图所示:

从上述配置key看出,properties配置文件中会有很多的冗余的信息,比如这些:

所以在使用时,我们大多数会选用yml配置文件,yml配置文件可以很好的解决代码冗余的问题.
接下来我们来介绍如何去配置yml文件
yml是YAML是缩写,它的全称YetAnotherMarkupLanguage翻译成中文就是“另⼀种标记语言.
我们先来学习yml的语法
yml是树形结构的配置文件,它的基础语法是"key:value".
key和value之间使用英文冒号加空格的方式组成,空格不可省略基础语法如下:
使用yml连接数据库yml使用示例:
```cpp
spring:
datasource:
url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false
username: root
password: root
// 字符串
string.value: Hello
// 布尔值,true或false
boolean.value: true
boolean.value1: false
// 整数
int.value: 10
// 浮点数
float.value: 3.14159
// Null,~代表null
null.value: ~
// "" 空字符串
// 直接后⾯什么都不加就可以了, 但这种方式不直观, 更多的表示是使用引号括起来
empty.value: ''
yml读取配置的方式和properties相同,使用@Value注解即可,实现代码如下:
yml配置:
string:
hello: Spring Boot
@RestController
public class ReadYml {
@Value("${string.hello}")
private String hello;
@RequestMapping("/ymlKey")
public String key(){
return "读取到值:"+hello;
}
}
配置文件也可以配置list集合,如下所示:
dbtypes:
name:
- mysql
- sqlserver
- db2
集合的读取和对象⼀样,也是使用 @ConfigurationProperties 来读取的,具体实现如下:
@Component
@ConfigurationProperties("dbtypes")
@Data
public class ListConfig {
private List<String> name;
}
访问集合的实现如下:
@RestController
public class ReadYml2 {
@Autowired
private ListConfig listConfig;
@RequestMapping("/readList")
public String readList(){
return listConfig.toString();
}
}
配置文件也可以配置map,如下所示:
maptypes:
map:
k1: kk1
k2: kk2
k3: kk3
Map的读取和对象⼀样,也是使用 @ConfigurationProperties 来读取的,具体实现如下:
@Component
@ConfigurationProperties("maptypes")
@Data
public class MapConfig {
private HashMap<String,String> map;
}
打印类的实现如下:
@RestController
public class ReadYml2 {
@Autowired
private MapConfig mapConfig;
@RequestMapping("/readMap")
public String readStudent(){
return mapConfig.toString();
}
}
优点:
1. properties是以key=value的形式配置的键值类型的配置文件,yml使用的是树形配置方式.
2. 读取配置文件内容,使用 @Value 注解,注解内使用" ${} “的格式读取.
3. yml层级之间使用换行缩进的方式配置,key和value之间使用”:"(英文冒号)加空格的方式设置,并
且空格不可省略.
4. properties为早期并且默认的配置文件格式,其配置存在⼀定的冗余数据,使用yml可以很好的解决
数据冗余的问题,但不适合复杂配置.
5. yml可以和properties共存,但⼀个项目中建议使用⼀种配置类型文件.