配置文件(Properties&YAML)

Author:Dawn_T17🥥 

配置文件是一种用于存储软件或系统配置信息的文件。它通常包含了各种参数、设置和选项,这些信息可以影响软件的行为和功能。

一、特点

  1. 文本格式:配置文件通常以文本形式存在,这使得它们易于编辑和理解。常见的配置文件格式包括 YAML、JSON、XML 和 INI 等。
  2. 层次结构:许多配置文件具有层次结构,可以组织成不同的部分或节,以便更好地管理复杂的配置。例如,在 YAML 文件中,可以使用缩进表示层次关系。
  3. 可扩展性:配置文件可以根据需要进行扩展和修改,而无需修改软件的源代码。这使得软件能够适应不同的环境和用户需求。

二、作用

  1. 定制软件行为:通过配置文件,用户可以根据自己的需求定制软件的行为。例如,可以设置数据库连接参数、日志级别、端口号、缓存大小等。
  2. 环境适应性:配置文件允许软件在不同的环境中运行,而无需重新编译。例如,可以在开发环境、测试环境和生产环境中使用不同的配置文件,以满足不同的需求。
  3. 简化部署:配置文件可以与软件一起打包和部署,使得软件的安装和配置更加简单。用户只需要修改配置文件中的参数,而无需对软件进行复杂的安装和设置过程。
  4. 团队协作:配置文件可以方便地在团队成员之间共享和协作。不同的团队成员可以根据自己的需求修改配置文件,而不会影响其他人的工作。

配置文件是软件和系统中非常重要的组成部分,它们提供了一种灵活、可扩展和易于管理的方式来配置软件的行为和功能。

_____________________________________________________________________________

配置格式指的是用于组织和呈现配置信息的特定结构和规则。不同的配置格式有不同的特点和用途,选择合适的配置格式取决于具体的应用场景和需求。

一、语法规则

  1. 键值对表示法:许多配置格式采用键值对的方式来存储配置信息。键是一个唯一的标识符,用于表示配置项的名称,而值则是与该键相关联的具体配置内容。

    • 例如,在 YAML 格式中,key: value表示一个键值对。
  2. 数据类型:配置格式可以支持不同的数据类型,如字符串、整数、布尔值、数组、对象等。这使得配置文件能够存储各种类型的配置信息。

    • 例如,在 JSON 格式中,可以使用字符串、数字、布尔值、数组和对象等数据类型。
  3. 注释:一些配置格式允许在配置文件中添加注释,以便更好地理解配置内容。注释通常以特定的符号开头,不会被解析器解释为实际的配置信息。

    • 例如,在 YAML 格式中,以#开头的行表示注释。

二、文件结构

  1. 层次结构:某些配置格式支持层次结构,可以将配置信息组织成不同的层次或节。这有助于更好地管理复杂的配置,并提高可读性和可维护性。

    • 例如,在 INI 格式中,配置文件由多个节组成,每个节包含一组键值对。
  2. 列表和数组:配置格式可以支持列表和数组的表示,以便存储多个相同类型的配置项。这对于需要配置多个类似的选项或参数非常有用。

    • 例如,在 JSON 格式中,可以使用数组来表示一组值。
  3. 对象和嵌套结构:一些配置格式允许使用对象和嵌套结构来表示复杂的配置信息。这可以模拟面向对象编程中的对象和类的概念,使得配置更加灵活和可扩展。

    • 例如,在 YAML 格式中,可以使用嵌套的字典和列表来表示复杂的结构。

三、用途和优势

  1. 可维护性:良好的配置格式可以提高配置文件的可维护性。清晰的语法规则和结构使得配置信息易于理解和修改,减少了出错的可能性。

  2. 可扩展性:一些配置格式具有良好的可扩展性,可以轻松地添加新的配置项或修改现有配置。这对于不断发展的应用程序非常重要,可以方便地适应新的需求和变化。

  3. 跨平台性:通用的配置格式通常具有较好的跨平台性,可以在不同的操作系统和编程语言中使用。这使得配置文件可以在不同的环境中共享和复用。

  4. 与工具的集成:一些配置格式与特定的工具和框架紧密集成,提供了方便的配置管理和解析功能。例如,Spring 框架广泛使用 YAML 和 Properties 格式来配置应用程序。

常见的配置格式包括 INI、XML、JSON、YAML 和 Properties 等。每种格式都有其独特的特点和适用场景

常见配置文件对比 

_____________________________________________________________________________

Properties

Properties 格式是一种常见的配置文件格式,主要用于存储键值对形式的配置信息。在 Java 中被广泛使用。

一、特点

  1. 简单的键值对结构

    • 每行表示一个键值对,键和值之间用等号(=)分隔。例如:key1=value1
    • 也可以使用冒号(:)作为分隔符,但等号更为常见。
  2. 支持注释

    • 以井号(#)开头的行被视为注释,不会被解析为配置信息。例如:# This is a comment
  3. 不支持复杂数据结构

    • Properties 格式只能存储简单的字符串类型的键值对,不支持嵌套的对象、数组等复杂数据结构。

二、用途

  1. Java 应用程序配置

    • 在 Java 项目中,Properties 文件常用来存储数据库连接信息、应用程序参数、日志级别等配置。通过java.util.Properties类可以方便地读取和操作这些配置信息。
  2. 国际化和本地化

    • Properties 文件可以用于存储不同语言的文本资源,实现国际化和本地化功能。每个 Properties 文件对应一种语言,键表示要显示的文本的标识符,值则是具体的文本内容。
  3. 其他场景

    • 除了 Java 应用程序,Properties 格式也可以在其他编程语言和工具中使用,只要有相应的解析器。例如,一些脚本语言可以读取 Properties 文件来获取配置参数。

例如


mybatis.mapper-locations=classpath:mappers/*xml

mybatis.type-aliases-package=com.traingcase.mybatis.entity

server.port=8080

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/training_case

spring.datasource.username=root

spring.datasource.password=1234

#??mybatis???, ????????
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl


mybatis.configuration.map-underscore-to-camel-case=true

spring.servlet.multipart.max-file-size=10MB

spring.servlet.multipart.max-request-size=100MB

#阿里云相关配置(OSS)
aliyun.oss.endpoint = https://oss-cn-hangzhou.aliyuncs.com
#aliyun.oss.accessKeyId = LTAI4GCH1vX6DKqJWxd6nEuW
#aliyun.oss.accessKeySecret = yBshYweHOpqDuhCArrVHwIiBKpyqSL
aliyun.oss.bucketName = dawn-web-framework01

 _____________________________________________________________________________

YAML 

YAML(YAML Ain't Markup Language)是一种人类友好的数据序列化格式,常以 “.yml” 或 “.yaml” 为文件扩展名。

优势

  1. 简洁性

    • 相比 XML 和 JSON,YAML 通常更加简洁,减少了配置文件的篇幅,提高了可读性和可维护性。
  2. 可扩展性

    • 容易进行扩展和修改,适应不断变化的需求。
  3. 跨平台性

    • 可以在不同的操作系统和编程语言中使用,具有较好的跨平台性。

例如:

spring:
  #数据库连接信息
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/training_case
    username: root
    password: 1234
    #文件上传配置
  servlet:
    multipart:
      max-file-size: 10
      max-request-size: 100

#Mybatis配置
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true

#阿里云OSS配置(自己配置)
aliyun:
  oss:
    endpoint: https://oss-cn-hangzhou.aliyuncs.com
    bucketName: dawn-web-framework01

____________________________________________________________________________

@ConfigurationProperties注解

@ConfigurationProperties是 Spring 框架中的一个注解,用于将外部配置文件中的属性绑定到一个 Java 对象上。

一、主要功能和特点

  1. 属性绑定
    • 可以将配置文件中的一组相关属性绑定到一个带有@ConfigurationProperties注解的 Java 类上。这样,配置信息可以以面向对象的方式进行访问和管理。
    • 例如,假设配置文件中有以下属性:app.name=MyAppapp.version=1.0,可以创建一个类并使用@ConfigurationProperties将这些属性绑定到该类的字段上。
   @ConfigurationProperties(prefix = "app")
   public class AppProperties {
       private String name;
       private String version;

       // Getters and setters
   }
  1. 支持多种配置源

    • 可以从多种配置源读取属性,包括 YAML、Properties 文件、环境变量等。Spring 会自动根据配置源的优先级进行属性绑定。
    • 例如,如果同时有一个application.properties和一个application.yml文件,Spring 会优先使用 YAML 文件中的属性进行绑定,如果 YAML 文件中没有相应的属性,则会从 Properties 文件中读取。
  2. 数据校验

    • 可以结合 Java Bean Validation API(如 JSR 380)对绑定的属性进行数据校验。例如,可以使用@NotNull@Min@Max等注解对属性进行校验,确保配置的合法性。
   @ConfigurationProperties(prefix = "app")
   public class AppProperties {
       @NotNull
       private String name;
       @Min(1)
       private int port;

       // Getters and setters
   }
  1. 自动更新
    • 在运行时,如果配置文件发生变化,Spring 可以自动更新绑定的属性。这对于需要动态调整配置的应用非常有用。

二、使用场景

  1. 应用程序配置

    • 用于管理应用程序的各种配置参数,如数据库连接信息、服务器端口、日志级别等。通过将这些配置集中在一个或多个带有@ConfigurationProperties注解的类中,可以方便地进行配置管理和维护。
    • 例如,可以创建一个DatabaseProperties类来管理数据库配置,一个ServerProperties类来管理服务器配置等。
  2. 微服务架构

    • 在微服务架构中,各个服务可能需要不同的配置。使用@ConfigurationProperties可以将每个服务的配置封装在独立的类中,便于管理和维护。
    • 例如,不同的微服务可能需要不同的数据库连接信息、缓存配置等,可以为每个微服务创建相应的配置类。
  3. 第三方库集成

    • 一些第三方库可能需要特定的配置参数。可以使用@ConfigurationProperties将这些参数绑定到一个类上,并在应用程序中进行配置。
    • 例如,集成一个消息队列时,可能需要配置队列的名称、连接地址等参数,可以创建一个MessageQueueProperties类来管理这些配置。

总之,@ConfigurationProperties注解提供了一种方便、灵活的方式来管理应用程序的配置信息,提高了配置的可维护性和可扩展性。

会爆一个警告,但不影响运行 

处理方法:添加一个依赖 

添加依赖后,我们在配置文件中添加自己的配置时候 

会给出相关提示

 ——————————————————————————————————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值