Kevin's blog Kevin's blog
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档

Kevin

你可以迷茫,但不可以虚度
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档
  • 常见问题

  • 数据库

  • 代码技巧

  • 浏览器

  • spring应用

    • spring常用组件扩展点
    • spring中的配置文件
    • 使用Java Agent字节码技术扩展
    • 什么是AP,什么是CP,什么是CAP
    • RabbitMq相关
    • ELK查询技巧
    • 性能优化手段
    • 经验技巧
    • spring应用
    kevin
    2024-04-24
    目录

    spring中的配置文件

    # spering中的配置文件

    Spring 项目中,配置文件用于定义应用程序的参数、行为和设置。配置文件可以用 YAML 或属性文件格式表示,且加载顺序各有不同。下面是 Spring 项目中常见的配置文件、它们的加载顺序,以及每个文件的作用和使用场景。

    # 配置文件的种类

    1. bootstrap.yml / bootstrap.properties
    2. application.yml / application.properties
    3. application-{profile}.yml / application-{profile}.properties
    4. @PropertySource
    5. applicationContext.xml / beans.xml
    6. @Value 和 @ConfigurationProperties

    # 适用场景

    • 启动配置:使用 bootstrap.yml 定义启动时的初始配置,一般为springcloud默认配置文件。
    • 核心配置:使用 application.yml 定义应用的主要参数,一般为springboot默认配置文件。
    • 按环境配置:使用 application-{profile}.yml 定义不同环境的配置。
    • 自定义配置:使用 @PropertySource 加载特定的自定义配置。

    # 配置文件的加载顺序

    1. bootstrap.yml / bootstrap.properties:最先加载。用于配置启动时的初始设置。
    2. application.yml / application.properties:次级加载。定义应用的核心配置。
    3. application-{profile}.yml / application-{profile}.properties:按环境加载。用于配置不同环境的参数。

    # 配置文件的作用和使用场景

    1. bootstrap.yml / bootstrap.properties

      • 作用:这个文件通常用于 Spring Cloud Config 应用,它在应用程序启动时首先加载,用于配置 Spring Cloud Config 服务的连接、认证;配置应用启动时的初始参数,如服务发现、配置中心、消息总线等。Spring Cloud Config 适用于集中式配置管理,尤其是在微服务架构中。它允许多个应用共享同一个配置源,并且可以动态更新配置
      • 使用场景:用于配置启动时需要的特定设置,通常涉及外部配置和服务注册。通常用于 Spring Cloud Config,配置与配置服务器相关的内容
      # 配置中心
      spring:
        cloud:
          config:
            uri: http://config-server:8888
            name: my-app
            profile: dev
            label: main
      
      # 服务发现
      eureka:
        client:
          serviceUrl:
            defaultZone: http://eureka-server:8761/eureka
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14

      从Spring Boot 2.4.0开始,配置文件加载的方式有所改变,bootstrap.yml 文件已经不再默认被加载,取而代之的是 application.yml。但是,如果你依然想要使用 bootstrap.yml,你需要引入 Spring Cloud Config 的依赖。

      如果你没有使用Spring Cloud Config,并且只是想在本地使用 bootstrap.yml 文件,你需要做的是:

      1. 确保 bootstrap.yml 有正确的配置内容。
      2. 添加 Spring Cloud 的相关依赖到你的 pom.xml 中,因为 bootstrap.yml 是由 Spring Cloud Context 来加载的。

      例如,添加以下依赖到你的 pom.xml 文件中:

      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-bootstrap</artifactId>
      </dependency>
      
      1
      2
      3
      4

      这个依赖项将允许你的Spring Boot应用在没有激活Spring Cloud Config Server的情况下读取 bootstrap.yml 文件。

      然而,如果你的意图只是要使用一个简单的Spring Boot项目并使用 application.yml 作为主配置文件(这是Spring Boot默认的做法),你可以将 bootstrap.yml 的内容转移到 application.yml 文件中,并确保没有包含任何Spring Cloud特定的配置,如 spring.cloud.config.enabled。这样,Spring Boot将会加载 application.yml 中的配置,并且你不需要额外的配置服务。

    2. application.yml / application.properties

      • 作用:Spring Boot 应用的默认配置文件,定义应用的核心配置,包括数据源、端口、日志级别、组件设置等。
      • 使用场景:用于配置应用程序的通用设置和行为,适用于所有环境。
      # 应用程序名称
      spring:
        application:
          name: my-app
      
      # 服务器端口
      server:
        port: 8080
      
      # 日志级别
      logging:
        level:
          root: INFO
          com.example: DEBUG
      
      # 数据源配置
      datasource:
        url: jdbc:mysql://localhost:3306/mydb
        username: root
        password: secret
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
    3. application-{profile}.yml / application-{profile}.properties

      • 作用:根据不同的环境配置参数,支持多环境配置。
      • 使用场景:用于区分开发、测试、生产等环境,并提供不同的配置。
      # 开发环境的配置
      spring:
        profiles: development
      
      # 数据源配置
      datasource:
        url: jdbc:mysql://localhost:3306/devdb
        username: dev_user
        password: dev_secret
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      # 生产环境的配置
      spring:
        profiles: production
      
      # 数据源配置
      datasource:
        url: jdbc:mysql://prod-db-server:3306/proddb
        username: prod_user
        password: prod_secret
      
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
    4. @PropertySource

      • 作用:加载自定义配置文件,适用于特定类或模块。
      • 使用场景:在 Spring Configuration 类上指定配置文件路径,加载额外的设置。
      import org.springframework.context.annotation.PropertySource;
      import org.springframework.context.annotation.Configuration;
      
      @Configuration
      @PropertySource("classpath:custom-config.properties")
      public class CustomConfig {
        // 自定义配置的使用
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
    5. applicationContext.xml / beans.xml

      • 作用:配置 Spring 的 Bean 和组件,用于传统的 XML 配置方式。
      • 使用场景:用于基于 XML 的 Spring 项目,定义 Bean 的依赖和生命周期。
      <!-- applicationContext.xml -->
      <beans>
        <bean id="myBean" class="com.example.MyClass">
          <property name="myProperty" value="myValue" />
        </bean>
      </beans>
      
      
      1
      2
      3
      4
      5
      6
      7
    6. @Value 和 @ConfigurationProperties

      • 作用:用于从配置文件中读取值,或将整个配置文件映射到一个对象中。
      • 使用场景:@Value 用于读取单个值,@ConfigurationProperties 用于将配置文件映射到 Java 对象。
      import org.springframework.beans.factory.annotation.Value;
      
      public class MyComponent {
        @Value("${my.property}")
        private String myProperty;
      
        public void printProperty() {
          System.out.println("Property value: " + myProperty);
        }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      import org.springframework.boot.context.properties.ConfigurationProperties;
      
      @ConfigurationProperties(prefix = "my")
      public class MyProperties {
        private String property;
      
        // Getters and setters
      }
      
      1
      2
      3
      4
      5
      6
      7
      8

    # 其他注意事项

    • 使用 Spring Boot 时,配置文件主要以 application.yml 或 application.properties 为主。
    • 如果使用 application-{profile}.yml,需要通过 spring.profiles.active 指定当前激活的环境。
    • 在复杂的 Spring 项目中,配置文件的加载顺序至关重要,需要确保正确的优先级和覆盖关系。
    上次更新: 2024/04/25, 13:45:23
    spring常用组件扩展点
    使用Java Agent字节码技术扩展

    ← spring常用组件扩展点 使用Java Agent字节码技术扩展→

    最近更新
    01
    AI是如何学习的
    06-05
    02
    chatGpt提示原则
    06-05
    03
    提示词工程实践指南
    06-05
    更多文章>
    | Copyright © 2022-2025 Kevin | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式