Spring Boot配置文件(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配置文件示例:

yaml 复制代码
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版本:

properties 复制代码
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

properties 复制代码
spring.profiles.active=dev

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

配置文件的占位符

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

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

properties 复制代码
server.port=8080
app.name=myapp-${server.port}

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

自定义配置属性

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

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

java 复制代码
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类中声明了一个相应的字段。现在,我们可以在配置文件中设置这个属性的值:

yaml 复制代码
myapp:
  greeting: Hello, World!

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

加密敏感信息

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

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

首先,添加依赖:

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

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

yaml 复制代码
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配置文件有所帮助!


🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏

📜您可能感兴趣的内容:

相关推荐
一只叫煤球的猫3 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9654 小时前
tcp/ip 中的多路复用
后端
bobz9654 小时前
tls ingress 简单记录
后端
皮皮林5515 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
你的人类朋友5 小时前
什么是OpenSSL
后端·安全·程序员
bobz9655 小时前
mcp 直接操作浏览器
后端
前端小张同学8 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook8 小时前
Manim实现闪光轨迹特效
后端·python·动效
武子康9 小时前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
该用户已不存在9 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net