前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot配置文件(YAML & Properties)总结

Spring Boot配置文件(YAML & Properties)总结

作者头像
IT_陈寒
发布2023-12-13 19:17:00
7220
发布2023-12-13 19:17:00
举报
文章被收录于专栏:开发经验开发经验
文章目录

    • 配置文件的作用
    • YAML配置文件
    • Properties配置文件
    • 配置文件的加载顺序
    • 激活不同的配置文件
    • 配置文件的占位符
    • 自定义配置属性
    • 加密敏感信息
    • 配置文件的最佳实践
    • 结论

🎉欢迎来到架构设计专栏~Spring Boot配置文件(YAML & Properties)总结



Spring Boot是一种用于简化Spring应用程序开发的框架,它提供了强大的配置管理功能。Spring Boot支持多种配置文件格式,包括YAML和Properties。在本文中,我们将总结Spring Boot配置文件的用法、语法规则以及最佳实践。

配置文件的作用

Spring Boot的配置文件用于配置应用程序的各种属性,包括数据库连接、端口号、日志级别、第三方服务的密钥等。通过配置文件,我们可以灵活地管理应用程序的配置,而不需要修改源代码。

在这里插入图片描述
在这里插入图片描述

YAML配置文件

YAML(YAML Ain’t Markup Language)是一种人类可读的数据序列化格式,它以缩进方式表示数据层次结构。在Spring Boot中,YAML文件通常用于配置复杂的属性。

在这里插入图片描述
在这里插入图片描述

以下是一个简单的YAML配置文件示例:

代码语言:javascript
复制
server:
  port: 8080
  servlet:
    context-path: /myapp

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password

在这个示例中,我们定义了服务器端口、Servlet上下文路径以及数据库连接属性。注意YAML文件的缩进表示层次结构,因此子属性(如portcontext-path)必须缩进两个空格以表示它们是父属性的子属性。

Properties配置文件

Properties文件是键值对的形式,它在Spring Boot中也被广泛使用。以下是上述YAML配置文件的等效Properties版本:

代码语言:javascript
复制
server.port=8080
server.servlet.context-path=/myapp

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password

在Properties文件中,每一行都包含一个属性的键值对。键和值之间使用等号(=)分隔。

在这里插入图片描述
在这里插入图片描述

配置文件的加载顺序

Spring Boot配置文件可以存在于多个位置,它们会按照特定的顺序加载。以下是加载顺序:

  1. 当前目录下的/config文件夹。
  2. 当前目录。
  3. 类路径下的/config包。
  4. 类路径根目录。

这意味着如果存在多个配置文件,后加载的配置文件会覆盖前加载的配置,从而允许我们在不同环境中使用不同的配置文件。

激活不同的配置文件

Spring Boot使用spring.profiles.active属性来激活不同的配置文件。可以在application.propertiesapplication.yaml中设置该属性,也可以在命令行或环境变量中指定。

例如,在application.properties中设置激活的配置文件为dev

代码语言:javascript
复制
spring.profiles.active=dev

然后,创建一个名为application-dev.propertiesapplication-dev.yaml的配置文件,其中包含与dev环境相关的配置。

配置文件的占位符

Spring Boot允许在配置文件中使用占位符${...}来引用其他属性的值。这对于在不同配置文件之间共享属性值非常有用。

以下是一个使用占位符的示例:

代码语言:javascript
复制
server.port=8080
app.name=myapp-${server.port}

在这个示例中,app.name属性的值将被解析为myapp-8080

自定义配置属性

除了使用Spring Boot默认的配置属性外,我们还可以定义自己的配置属性。要定义自定义配置属性,可以创建一个Java类,并使用@ConfigurationProperties注解来指定属性的前缀。然后,将该类作为一个Bean注册到Spring容器中。

以下是一个自定义配置属性的示例:

代码语言:javascript
复制
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "myapp")
public class MyAppProperties {

    private String greeting;

    public String getGreeting() {
        return greeting;
    }

    public void setGreeting(String greeting) {
        this.greeting = greeting;
    }
}

在上述示例中,我们定义了一个名为myapp.greeting的属性,并在MyAppProperties类中声明了一个相应的字段。现在,我们可以在配置文件中设置这个属性的值:

代码语言:javascript
复制
myapp:
  greeting: Hello, World!

然后,可以在应用程序中注入MyAppProperties类来获取该属性的值。

加密敏感信息

在实际项目中,配置文件可能包含一些敏感信息,如数据库密码、API密钥等。为了保护这些敏感信息,Spring Boot提供了加密和解密属性值的功能。

在这里插入图片描述
在这里插入图片描述

可以使用jasypt-spring-boot-starter等第三方库来实现属性加密。以下是一个示例:

首先,添加依赖:

代码语言:javascript
复制
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

然后,在配置文件中使用加密的敏感属性:

代码语言:javascript
复制
myapp:
  password: ENC(密文)

在上述示例中,ENC(...)表示属性值已被加密。Spring Boot会自动解密属性值并注入到应用程序中。

配置文件的最佳实践

以下是一些Spring Boot配置文件的最佳实践:

  1. 使用YAML格式配置文件来管理复杂的属性,使用Properties格式配置文件来管理简单的属性。
  2. 使用多个配置文件来支持不同的环境(如application-dev.yamlapplication-prod.yaml等)。
  3. 使用占位符来引用其他属性的值,以避免硬编码。
  4. 将敏感信息加密存储,并使用第三方库来实现属性加密。
  5. 使用自定义配置属性类来封装和管理相关属性。
在这里插入图片描述
在这里插入图片描述

结论

Spring Boot配置文件是管理应用程序配置的关键。通过合理地使用YAML和Properties格式的配置文件,我们可以轻松管理应用程序的各种属性,从而提高了应用程序的灵活性和可维护性。同时,Spring Boot还提供了丰富的功能来支持自定义配置属性和属性加密,以满足不同项目的需求。希望本文对您理解和使用Spring Boot配置文件有所帮助!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 配置文件的作用
  • YAML配置文件
  • Properties配置文件
  • 配置文件的加载顺序
  • 激活不同的配置文件
  • 配置文件的占位符
  • 自定义配置属性
  • 加密敏感信息
  • 配置文件的最佳实践
  • 结论
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档