• 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配置文件示例:

    server:
      port: 8080
      servlet:
        context-path: /myapp
    
    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/mydb
        username: root
        password: password
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

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

    Properties配置文件

    Properties文件是键值对的形式,它在Spring Boot中也被广泛使用。以下是上述YAML配置文件的等效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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    配置文件的加载顺序

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

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

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

    激活不同的配置文件

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

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

    spring.profiles.active=dev
    
    • 1

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

    配置文件的占位符

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

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

    server.port=8080
    app.name=myapp-${server.port}
    
    • 1
    • 2

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

    自定义配置属性

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

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

    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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

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

    myapp:
      greeting: Hello, World!
    
    • 1
    • 2

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

    加密敏感信息

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

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

    首先,添加依赖:

    <dependency>
        <groupId>com.github.ulisesbocchiogroupId>
        <artifactId>jasypt-spring-boot-starterartifactId>
        <version>3.0.3version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    myapp:
      password: ENC(密文)
    
    • 1
    • 2

    在上述示例中,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配置文件有所帮助!


    🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
    📜您可能感兴趣的内容:

    在这里插入图片描述

  • 相关阅读:
    时间序列的数据分析(二):数据趋势的计算
    力扣:116. 填充每个节点的下一个右侧节点指针(Python3)
    [Python] Pathlib 使用
    场景图形管理 - (1)
    高精度数字源表覆盖12+专业领域,20+研究方向
    使用AOP做日志切面
    简单介绍Spring中的AOP
    线上展厅制作成本
    人工智能安全-5-网络入侵检测
    范西特-泽尼克定理的证明
  • 原文地址:https://blog.csdn.net/qq_43546721/article/details/132855056