🏀🏀🏀来都来了,不妨点个关注!
🎧🎧🎧博客主页:欢迎各位大佬!
文章目录
Spring Boot的配置文件
1. 配置文件的作用
整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:
- 数据库的连接信息(包含⽤户名和密码的设置);
- 项⽬的启动端⼝;
- 第三⽅系统的调⽤秘钥等信息;
- ⽤于发现和定位问题的普通⽇志和异常⽇志等。
1.1 配置文件里的配置类型的分类
- 系统配置项 如:server.port (给系统框架使用的)
- 用户自定义配置项 如:myobj (开发者自己使用)
2.配置文件的类型
Spring Boot的配置文件主要分为以下两种格式:
- . properties
- . yml
其中,properties是老版的配置文件,同时也是创建Spring Boot项目默认的配置文件,而yml是新版的配置文件,一般一个项目中只有一种类型的配置文件,值得注意的是,如果一个项目中同时有.properties和.yml的配置文件,并且配置文件中出现了相同的配置,会以properties为主,即 .properties配置文件的优先级更高,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。
如下例子:
3. properties配置文件说明
properties是以键值的格式配置的,其中,key和value之间是“=”连接的,示例代码如下:
#系统配置项
server.port=8088
#mysql配置项
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/blog
spring.datasource.username=root
spring.datasource.password=030521
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
读取配置文件中key对应的value:
如果我们想主动读取配置文件中的内容,可以使用@Value注解
@Value注解使用"${key}"格式读取,具体代码实现如下:
@Value("${server.port}")
private String myport;
@PostConstruct
public void doPostConstruct() {
System.out.println("server port -> " + myport);
}
这里以读取系统配置项server.port为例。其中@PostConstruct注解加在方法上面表示在初始化Spring容器的时候执行该方法。
properties的优缺点分析:
优点:配置文件写法清晰:key=value,适合初学者。
缺点:写法比较臃肿,如我们上述配置连接数据库的相关操作:
要解决上述问题,我们可以使用yml配置文件来解决。
4. yml配置文件说明
yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。
yml优点分析:
- yml 是⼀个可读性⾼,写法简单、易于理解,它的语法和 JSON 语⾔类似。
- yml⽀持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
- yml ⽀持更多的编程语⾔,它不⽌是 Java中可以使⽤,在 Golang、PHP、Python、Ruby、 JavaScript、Perl 中也可以使用。
4.1 yml的基本语法(使用冒号和空格的格式 )
yml 是树形结构的配置⽂件,它的基础语法是“key: value”,其中 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略。示例如下:
server:
port: 8080
使用yml连接数据库(与properties对比):
yml:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/blog
username: root
password: 030521
driver-class-name: com.mysql.cj.jdbc.Driver
properties:
#mysql配置项
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/blog
spring.datasource.username=root
spring.datasource.password=030521
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
4.2 yml读取配置内容说明
yml读取配置的方式和properties读取的方式是一样的,使用@Value注解即可,这里我们不做赘述,下面我们介绍yml读取对象和取对象的操作:
与properties不同,yml配置文件中可以存储对象,示例代码如下:
存储对象:
# 自定义对象
my:
name: xiaoxin
height: 168
也可以写一行:
my: {name: xiaoxin,height: 168}
读取对象:
使用@ConfigurationProperties注解读取。具体格式如下:
@ConfigurationProperties(prefix = "key ")
具体代码如下:
@Data
@ConfigurationProperties(prefix = "my")
@Component
public class User {
String name;
int height;
}
@RestController
public class UserController {
@Autowired
private User user;
//随着SpringBoot的加载而加载
@PostConstruct
public void doPostConstruct() {
System.out.println(user.toString());
}
}
结果如下:
5. Spring Boot读取指定的配置文件
有时我们需要读取指定的配置文件,此时就需要在application.properties或application.yml文件下指定具体的配置文件,具体步骤如下:
1.在application.properties和application.yml同级目录下创建applicat-xxx.properties或application-xxx.yml的文件。
2.在application.properties或application.yml文件中添加如下配置:
#指定运行环境的配置文件
spring.profiles.active=dev
其中的dev则是我们命名的配置文件,即application-dev.yml,值得注意的是,如果我们不小心将配置文件名写成如 aaa.yml的格式,不会出现报错的情况,但相应的我们的配置也不会生效,这就得提到Spring Boot的核心思想了:约定大于配置。 我们要按照Spring Boot约定的配置命名。
以上就是本文的全部内容了,感谢支持!