简单易上手!让你轻松掌握Spring Boot的yaml和properties配置文件
本专栏致力打造最硬核Spring Boot 系列教程,从零基础到进阶系列学习内容,????均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。
环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE
前言
在开发中,我们经常需要进行配置文件的管理。配置文件通常包含了应用程序中需要的各种配置信息,如数据库连接信息、日志级别、服务器端口等等,对于应用程序的性能和可维护性有着至关重要的作用。Spring Boot提供了多种方式来进行配置文件的管理,本文将重点介绍yaml和properties两种格式的配置文件。
一、yaml格式配置文件
1.1 语法介绍
yaml是一种针对数据序列化的格式,它不能执行任何代码,但是可以作为配置文件。yaml格式配置文件主要由键值对组成。其中,键值对由一对冒号“:”分割,键值对之间使用“-”或者空格进行缩进。
1.2 使用方法
在Spring Boot中,我们可以通过application.yaml或者bootstrap.yaml来进行配置文件的管理。application.yaml中的配置信息会覆盖bootstrap.yaml中的配置信息。以下是一个简单的yaml格式配置文件示例:
server:
port: 8080
servlet:
context-path: /demo
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
二、properties格式配置文件
2.1 语法介绍
properties格式配置文件也是由键值对组成的,其中,键值对由等号“=”进行分割,多个键值对之间使用换行符“\n”进行分割。
2.2 使用方法
在Spring Boot中,我们可以通过application.properties或者bootstrap.properties来进行配置文件的管理。以下是一个简单的properties格式配置文件示例:
server.port=8080
server.servlet.context-path=/demo
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=123456
spring.jackson.time-zone=GMT+8
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
这个示例中,我们同样配置了应用程序的端口号为8080,应用程序的上下文路径为/demo,数据库连接信息为jdbc:mysql://localhost:3306/test以及jackson序列化的时间格式和时区。
三、实际应用场景
在实际应用场景中,我们可能需要根据不同的环境来加载不同的配置文件。Spring Boot提供了多种方式来进行环境配置。可以通过设置spring.profiles.active参数来指定当前的环境,同时可以在配置文件名后用“-”来指定当前环境。例如:
application-dev.yaml #开发环境配置文件
application-prod.yaml #生产环境配置文件
此外,Spring Boot还提供了@ConfigurationProperties注解来自动注入配置文件。以下是一个简单的示例:
#application.yaml
book:
title: Spring Boot实战
author: 张三
price: 98.00
//Book.java
@ConfigurationProperties(prefix = "book")
public class Book {
private String title;
private String author;
private BigDecimal price;
// 省略getter和setter方法
}
//在Controller中使用Book类
@RestController
public class BookController {
@Autowired
private Book book;
// 省略其他代码
}
在上述代码中,我们使用@ConfigurationProperties注解来自动注入配置文件中的配置信息,Spring Boot会自动将application.yaml中book前缀的配置信息注入到Book类中,并且在Controller中使用@Autowired注解进行自动装配。
四、测试用例
为了验证本文的代码正确性,我们编写了一个简单的Spring Boot应用程序,并分别使用yaml和properties两种格式的配置文件进行配置。
4.1 创建一个新的Spring Boot项目
在Spring Initializr中创建一个新的Spring Boot项目,选择Web和MySql依赖。
4.2 添加yaml格式配置文件
在src/main/resources目录下创建application.yaml文件,并添加以下内容:
server:
port: 8080
servlet:
context-path: /demo
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
4.3 添加properties格式配置文件
在src/main/resources目录下创建application.properties文件,并添加以下内容:
server.port=8080
server.servlet.context-path=/demo
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=123456
spring.jackson.time-zone=GMT+8
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
4.4 添加Book类和BookController类
在src/main/java目录下创建com.example.demo包,在该包下创建Book类和BookController类。代码如下:
示例截图如下:
//Book.java
@ConfigurationProperties(prefix = "book")
public class Book {
private String title;
private String author;
private BigDecimal price;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
}
//BookController.java
@RestController
public class BookController {
@Autowired
private Book book;
@GetMapping("/book")
public Book getBook() {
return book;
}
}
4.5 启动应用程序
在IDEA中启动应用程序,并在浏览器中访问http://localhost:8080/demo/book,我们可以看到应用程序输出了我们在yaml和properties格式配置文件中设置的书籍信息。
五、小结
本文主要介绍了Spring Boot中yaml和properties两种格式的配置文件的使用。yaml格式配置文件主要由键值对组成,其中键和值之间使用冒号“:”进行分割,多个键值对之间使用“-”或者空格进行缩进。properties格式配置文件同样由键值对组成,其中键和值之间使用等号“=”进行分割,多个键值对之间使用换行符“\n”进行分割。在实际应用场景中,我们可以根据不同的环境来加载不同的配置文件,同时可以通过@ConfigurationProperties注解来自动注入配置文件。配置文件的管理对于Spring Boot应用程序的性能和可维护性有着至关重要的作用。
关于我
????????作者:bug菌 ✏️博客:****、掘金、infoQ、51CTO等 ????简介:****|阿里云|华为云|51CTO等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+