Spring Boot 就是 Spring 框架的脚⼿架,它就是为了快速开发 Spring 框架⽽诞⽣的。
1.Spring Boot 优点
- 快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
- 内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。
- 快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
- 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
- ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况。
2.Spring Boot 项目创建
3.配置文件作用
整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:
- 数据库的连接信息(包含⽤户名和密码的设置);
- 项⽬的启动端⼝;
- 第三⽅系统的调⽤秘钥等信息;
- ⽤于发现和定位问题的普通⽇志和异常⽇志等。
想象⼀下如果没有配置信息,那么 Spring Boot 项⽬就不能连接和操作数据库,甚⾄是不能保存可以⽤于排查问题的关键⽇志,所以配置⽂件的作⽤是⾮常重要的。
4.配置文件的格式
Spring Boot 配置⽂件主要分为以下两种格式:
- .properties
- .yml
这就好像连锁店⾥⾯的统⼀服装⼀样,有两种不同的款式,properties 类型的配置⽂件就属于⽼款“服饰”,也是创建 Spring Boot 项⽬时默认的⽂件格式(主要是由于仓库⾥还有库存),⽽ yml 属于新版款式,如果⽤户了解情况直接指定要新款服饰,那么就直接发给他。
注意:
- 理论上讲 properties 可以和 yml ⼀起存在于⼀个项⽬当中,当 properties 和 yml ⼀起存在⼀个项⽬中时,如果配置⽂件中出现了同样的配置,⽐如 properties 和 yml 中都配置了“server.port”,那么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最⾼,但加载完.properties ⽂件之后,也会加载 .yml ⽂件的配置信息。
- 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配置⽂件格式,这样可以更好的维护(降低故障率)。这就好像连锁店的服饰⼀样,不管是⽼款的服装还是新款的服装,⼀定要统⼀了才好看。
5.为配置文件安装提示插件
IDEA 社区版安装 Spring Assistant 插件之后,就可以正常创建 Spring Boot 项⽬了,并且 yml 的配置⽂件就有提示了。但默认情况下是不⽀持 properties 格式的⽇志提示的,这个时候需要安装了 Spring Tools 插件才会有相应的提示。(IDEA专业版的不用安装,自带提示)
6.properties 配置文件说明
properties 配置⽂件是最早期的配置⽂件格式,也是创建 Spring Boot 项⽬默认的配置⽂件。
properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,如:
server.port=8081
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
spring.datasource.username=root
spring.datasource..password=666666
properties读取配置⽂件
如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤ @Value 注解来实现。
@Value 注解使⽤“${}”的格式读取,如下代码所示:
package com.example._20221231.component;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ReadProperties {
@Value("${server.port}")
private String port;
@PostConstruct
public void postContruct() {
System.out.println("Read properties port:" + port);
}
}
执行结果:
properties缺点:
properties 配置是以 key-value 的形式配置的,配置⽂件中会有很多的冗余的信息
想要解决这个问题,就可以使⽤ yml 配置⽂件的格式化了。
7.yml 配置文件说明
yml 是⼀个可读性⾼,易于理解,⽤来表达数据序列化的格式。它的语法和其他⾼级语⾔类似,并且可以简单表达清单(数组)、散列表,标量等数据形态。它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。yml 最⼤的优势是可以跨语⾔,不⽌是 Java 中可以使⽤ golang、python 都可以使⽤ yaml 作为配置⽂件。
yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略。
yml读取配置文件
yml 读取配置的⽅式和 properties 相同,使⽤ @Value 注解即可,实现代码如下:
运行结果:
value 值加单双引号:
运行结果:
从上述结果可以看出:
- 字符串默认不⽤加上单引号或者双引号。
- 单引号会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据。
- 双引号不会转义字符串⾥⾯的特殊字符;特殊字符会作为本身想表示的意思。
配置对象:
这个时候就不能⽤ @Value 来读取配置中的对象了(能使用@Value,就怕对象里的属性太多,一个一个写太麻烦),此时要使⽤另⼀个注解 @ConfigurationProperties来读取,具体实现如下:
运行结果:
配置集合:
配置⽂件也可以配置 list 集合,如下所示:
运行结果:
properties 和 yml 总结
- properties 是以 key=value 的形式配置的键值类型的配置⽂件,⽽ yml 使⽤的是类似 json 格式的树形配置⽅式进⾏配置的,yml 层级之间使⽤换⾏缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略。
- properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。
- yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置⽂件作为 Java 和 Go 的共同配置⽂件。
- yml 虽然可以和 properties 共存,但⼀个项⽬中建议使⽤统⼀的配置类型⽂件