Spring Boot(02):配置轻松搞定!掌握Spring Boot的yaml、properties配置文件

举报
bug菌 发表于 2023/08/25 22:24:33 2023/08/25
【摘要】 本文主要介绍了Spring Boot中yaml和properties两种格式的配置文件的使用。首先介绍了yaml格式配置文件的语法和使用方法,然后详细介绍了properties格式配置文件的语法和使用方法。同时,文中还给出了实际应用场景下的使用示例,并提供了源代码和测试用例。

前言

        在开发中,我们经常需要进行配置文件的管理。配置文件通常包含了应用程序中需要的各种配置信息,如数据库连接信息、日志级别、服务器端口等等,对于应用程序的性能和可维护性有着至关重要的作用。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
        这个示例中,我们配置了应用程序的端口号为8080,应用程序的上下文路径为/demo,数据库连接信息为jdbc:mysql://localhost:3306/test以及jackson序列化的时间格式和时区。

二、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菌,CSDN | 阿里云 | 华为云 | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。