文章目录
1. 配置文件作用
整个项目中所有重要的数据都是在配置文件中,比如:
- 数据库的连接信息(包含用户名和密码的设置)
- 项目的启动端口
- 第三方系统的调用秘匙等信息
- 用于发现和定位问题的普通日志和异常日志等
想象一下如果没有配置信息,那么 Spring Boot 项目就不能连接和操作数据库,甚至是不能保存可以用于排查问题的关键日志,所以配置文件的作用是十分重要的。
2. 配置文件的格式和分类
配置文件的分类:
- 系统的配置文件,比如连接字符串,比如日志相关设置,系统定义好的
- 用户自定义的
Spring Boot 配置文件主要分为以下两种格式:
- .properties
- .yml
创建 application.yml 配置文件
2.1 规则(tips)
-
一个项目中可以存下两种配置文件(.properties 和 .yml),但是不建议一个项目中出现两种配置文件
-
当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以 .properties 为主
2.2 为配置文件安装提示插件
IDEA 社区版安装 Spring Assistant 插件之后,就可以正常创建 Spring Boot 项⽬了,并且 yml 的配置⽂件就有提示了。但默认情况下是不⽀持 properties 格式的⽇志提示的,这个时候需要安装了 Spring Tools 插件才会有相应的提示。
3. properties 配置文件说明
3.1 properties 基本语法
采用 key=value 形式,如:server.port=9090
tips:前后就不要加空格了,后面也不能加空格
properties 配置文件 内容(这只是我一般放在代码片段的,当然里面你可以写其他内容,这只是我个人的,但是这个语法格式,如下)
#配置数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/onliemusic?characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=707703
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#配置xml
mybatis.mapper-locations=classpath:mybatis/**Mapper.xml
#配置springboot上传文件的大小,默认每个文件的配置最大为15Mb,单次请求的文件的总数不能大于100Mb
spring.servlet.multipart.max-file-size = 15MB
spring.servlet.multipart.max-request-size=100MB
# 配置springboot日志调试模式是否开启
debug=true
# 设置打印日志的级别,及打印sql语句
#日志级别:trace,debug,info,warn,error
#基本日志
logging.level.root=INFO
logging.level.com.example.musicserver.mapper=debug
#扫描的包:druid.sql.Statement类和frank包
logging.level.druid.sql.Statement=DEBUG
logging.level.com.example=DEBUG
3.2 关于 properties 中文乱码的问题处理:
1.配置当前项目中文乱码问题:
2.配置新创建项目中文乱码问题:
3.将原来的 application.properties 删除掉,重新再创建一个 application.properties
因为之前的设置文件已经是不支持中文编码的文件格式,设置编码再创建 application.properties 之后,所以后设置的编码不会改变原来旧的 application.properties文件,所以需要先将之前的配置文件删除掉重新创建
4. 读取 properties 配置文件
4.1 读取单个配置文件
通过 @Vaule 来读取配置文件,如图:
此时 properties 配置文件中只有个端口号,我们去读取它
读取结果:
5. yml 配置文件说明
yml 是一个可读性高,易于理解,用来表达数据库序列化的格式,它的语法和其他高级语言类似
yml 最大的优势是可以跨语言,不只是 Java 中可以使用, golang,python都可以使用 yml 配置文件
5.1 yml 基本语法
yml 是树形结构的配置文件,它的基础语法是
“key: value”
,注意key和value之间使用英文冒号加空格的方式组成,其中的空格不可以省略
基础语法如下:
5.2 yml 特点
特点:
- 写法简单,可读性高
- 支持更多的数据类型
- 跨语言使用:Java/golong/高版本python
1.对于 properties 和 yml 配置文件中连接数据库操作来说,yml 的简便可以直接体现出来。如图:
properties配置文件中,连接数据库操作,需要没行都写spring.datasource.
而 yml 配置文件中就不需要:
2.yml 配置文件中 支持更多的数据类型
6. 读取 yml 配置文件
6.1 读取单个配置文件
这里 注意 此时 yml 配置文件当中 设置的端口号 是 9092!
当我们 按照 9092端口号 去访问的时候,发现 找不到!!
但是我们使用 properties 配置文件中的 端口号 会发现,就能够访问
当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以 .properties 为主,
6.2 读取多个配置文件
6.3 yml 单双引号的问题
读取下图配置文件:
通过 @Value(“${ }”)
读取配置文件
打印结果如图:
我们可以发现,单双引号打印的结果,和我们预期的结果不同:
结论:yml 中如果使用了 双引号就会按照(原)语义执行,如果不加单,双引号,或者加了单引号,那么默认会将字符串的特殊字符进行转义,比如 \n - > \ \ n (转义处理)
就像上图,加了双引号 \n 就是换行,按照原语义执行
,而 加了 单引号 和没加引号,则默认会将字符的特殊字符转义
6.4 yml 配置对象的读与写
我们还可以在 yml 中配置对象,如下配置:
student 为一个对象,对象中的属性分别为 id,name,age
这个时候就不能用 @Value 来读取配置中的对象了,此时要使用另外一个注解 @ConfigurationProperties 来读取,具体实现如下:
- 先创建一个实体类
- 进行读取,因为我们在实体类中加入了五大注解,这里我们直接进行属性注入的方式,进行读取
- 结果如下
如果我们要读取其他对象(student2),只需要将实体类中的 @ConfigurationProperties(prefix = “student”)
中的 student 改成我们所需要读取的对象即可
6.4 yml 配置集合的读与写
yml 集合的写法,如图:
一般建议用第二种
yml 集合的读取:这里读取第二个配置文件dbtupes2(集合的名字随便取)
集合的读取和对象一样,也是使用 @ConfigurationProperties
来读取的,具体实现如下:
结果如图:
7. properties VS yml
properties
是以key=value
的形式配置的键值类型的配置文件,而yml
使用的是类似于 json 格式的树形
配置方式进行配置的,yml 层级之间使用换行缩进的方式配置,key 和 value
之间使用“:” 英文冒号加空格的方式设置
,并且空格不可以省略- properties 为早期并且默认的配置文件格式,但其配置存在一定的冗余数据,使用 yml 可以更好的解决数据冗余问题
yml 通用性更好
,支持更多语言
,如 Java,GO,Python等yml 支持更多的数据类型
转载:https://blog.csdn.net/Biteht/article/details/127953337