大家好,欢迎来到IT知识分享网。
Author:
配置文件是一种用于存储软件或系统配置信息的文件。它通常包含了各种参数、设置和选项,这些信息可以影响软件的行为和功能。
一、特点
- 文本格式:配置文件通常以文本形式存在,这使得它们易于编辑和理解。常见的配置文件格式包括 YAML、JSON、XML 和 INI 等。
- 层次结构:许多配置文件具有层次结构,可以组织成不同的部分或节,以便更好地管理复杂的配置。例如,在 YAML 文件中,可以使用缩进表示层次关系。
- 可扩展性:配置文件可以根据需要进行扩展和修改,而无需修改软件的源代码。这使得软件能够适应不同的环境和用户需求。
二、作用
- 定制软件行为:通过配置文件,用户可以根据自己的需求定制软件的行为。例如,可以设置数据库连接参数、日志级别、端口号、缓存大小等。
- 环境适应性:配置文件允许软件在不同的环境中运行,而无需重新编译。例如,可以在开发环境、测试环境和生产环境中使用不同的配置文件,以满足不同的需求。
- 简化部署:配置文件可以与软件一起打包和部署,使得软件的安装和配置更加简单。用户只需要修改配置文件中的参数,而无需对软件进行复杂的安装和设置过程。
- 团队协作:配置文件可以方便地在团队成员之间共享和协作。不同的团队成员可以根据自己的需求修改配置文件,而不会影响其他人的工作。
配置文件是软件和系统中非常重要的组成部分,它们提供了一种灵活、可扩展和易于管理的方式来配置软件的行为和功能。
_____________________________________________________________________________
配置格式指的是用于组织和呈现配置信息的特定结构和规则。不同的配置格式有不同的特点和用途,选择合适的配置格式取决于具体的应用场景和需求。
一、语法规则
- 键值对表示法:许多配置格式采用键值对的方式来存储配置信息。键是一个唯一的标识符,用于表示配置项的名称,而值则是与该键相关联的具体配置内容。
- 例如,在 YAML 格式中,
key: value表示一个键值对。
- 例如,在 YAML 格式中,
- 数据类型:配置格式可以支持不同的数据类型,如字符串、整数、布尔值、数组、对象等。这使得配置文件能够存储各种类型的配置信息。
- 例如,在 JSON 格式中,可以使用字符串、数字、布尔值、数组和对象等数据类型。
- 注释:一些配置格式允许在配置文件中添加注释,以便更好地理解配置内容。注释通常以特定的符号开头,不会被解析器解释为实际的配置信息。
- 例如,在 YAML 格式中,以
#开头的行表示注释。
- 例如,在 YAML 格式中,以
二、文件结构
- 层次结构:某些配置格式支持层次结构,可以将配置信息组织成不同的层次或节。这有助于更好地管理复杂的配置,并提高可读性和可维护性。
- 例如,在 INI 格式中,配置文件由多个节组成,每个节包含一组键值对。
- 列表和数组:配置格式可以支持列表和数组的表示,以便存储多个相同类型的配置项。这对于需要配置多个类似的选项或参数非常有用。
- 例如,在 JSON 格式中,可以使用数组来表示一组值。
- 对象和嵌套结构:一些配置格式允许使用对象和嵌套结构来表示复杂的配置信息。这可以模拟面向对象编程中的对象和类的概念,使得配置更加灵活和可扩展。
- 例如,在 YAML 格式中,可以使用嵌套的字典和列表来表示复杂的结构。
三、用途和优势
- 可维护性:良好的配置格式可以提高配置文件的可维护性。清晰的语法规则和结构使得配置信息易于理解和修改,减少了出错的可能性。
- 可扩展性:一些配置格式具有良好的可扩展性,可以轻松地添加新的配置项或修改现有配置。这对于不断发展的应用程序非常重要,可以方便地适应新的需求和变化。
- 跨平台性:通用的配置格式通常具有较好的跨平台性,可以在不同的操作系统和编程语言中使用。这使得配置文件可以在不同的环境中共享和复用。
- 与工具的集成:一些配置格式与特定的工具和框架紧密集成,提供了方便的配置管理和解析功能。例如,Spring 框架广泛使用 YAML 和 Properties 格式来配置应用程序。
常见的配置格式包括 INI、XML、JSON、YAML 和 Properties 等。每种格式都有其独特的特点和适用场景
常见配置文件对比
_____________________________________________________________________________
Properties
Properties 格式是一种常见的配置文件格式,主要用于存储键值对形式的配置信息。在 Java 中被广泛使用。
一、特点
- 简单的键值对结构
- 每行表示一个键值对,键和值之间用等号(=)分隔。例如:
key1=value1。 - 也可以使用冒号(:)作为分隔符,但等号更为常见。
- 每行表示一个键值对,键和值之间用等号(=)分隔。例如:
- 支持注释
- 以井号(#)开头的行被视为注释,不会被解析为配置信息。例如:
# This is a comment。
- 以井号(#)开头的行被视为注释,不会被解析为配置信息。例如:
- 不支持复杂数据结构
- Properties 格式只能存储简单的字符串类型的键值对,不支持嵌套的对象、数组等复杂数据结构。
二、用途
- Java 应用程序配置
- 在 Java 项目中,Properties 文件常用来存储数据库连接信息、应用程序参数、日志级别等配置。通过
java.util.Properties类可以方便地读取和操作这些配置信息。
- 在 Java 项目中,Properties 文件常用来存储数据库连接信息、应用程序参数、日志级别等配置。通过
- 国际化和本地化
- Properties 文件可以用于存储不同语言的文本资源,实现国际化和本地化功能。每个 Properties 文件对应一种语言,键表示要显示的文本的标识符,值则是具体的文本内容。
- 其他场景
- 除了 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” 为文件扩展名。
优势
- 简洁性
- 相比 XML 和 JSON,YAML 通常更加简洁,减少了配置文件的篇幅,提高了可读性和可维护性。
- 可扩展性
- 容易进行扩展和修改,适应不断变化的需求。
- 跨平台性
- 可以在不同的操作系统和编程语言中使用,具有较好的跨平台性。
例如:
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 对象上。
一、主要功能和特点
- 属性绑定
- 可以将配置文件中的一组相关属性绑定到一个带有
@ConfigurationProperties注解的 Java 类上。这样,配置信息可以以面向对象的方式进行访问和管理。 - 例如,假设配置文件中有以下属性:
app.name=MyApp、app.version=1.0,可以创建一个类并使用@ConfigurationProperties将这些属性绑定到该类的字段上。
- 可以将配置文件中的一组相关属性绑定到一个带有
@ConfigurationProperties(prefix = "app") public class AppProperties { private String name; private String version; // Getters and setters }
- 支持多种配置源
- 可以从多种配置源读取属性,包括 YAML、Properties 文件、环境变量等。Spring 会自动根据配置源的优先级进行属性绑定。
- 例如,如果同时有一个
application.properties和一个application.yml文件,Spring 会优先使用 YAML 文件中的属性进行绑定,如果 YAML 文件中没有相应的属性,则会从 Properties 文件中读取。
- 数据校验
- 可以结合 Java Bean Validation API(如 JSR 380)对绑定的属性进行数据校验。例如,可以使用
@NotNull、@Min、@Max等注解对属性进行校验,确保配置的合法性。
- 可以结合 Java Bean Validation API(如 JSR 380)对绑定的属性进行数据校验。例如,可以使用
@ConfigurationProperties(prefix = "app") public class AppProperties { @NotNull private String name; @Min(1) private int port; // Getters and setters }
- 自动更新
- 在运行时,如果配置文件发生变化,Spring 可以自动更新绑定的属性。这对于需要动态调整配置的应用非常有用。
二、使用场景
- 应用程序配置
- 用于管理应用程序的各种配置参数,如数据库连接信息、服务器端口、日志级别等。通过将这些配置集中在一个或多个带有
@ConfigurationProperties注解的类中,可以方便地进行配置管理和维护。 - 例如,可以创建一个
DatabaseProperties类来管理数据库配置,一个ServerProperties类来管理服务器配置等。
- 用于管理应用程序的各种配置参数,如数据库连接信息、服务器端口、日志级别等。通过将这些配置集中在一个或多个带有
- 微服务架构
- 在微服务架构中,各个服务可能需要不同的配置。使用
@ConfigurationProperties可以将每个服务的配置封装在独立的类中,便于管理和维护。 - 例如,不同的微服务可能需要不同的数据库连接信息、缓存配置等,可以为每个微服务创建相应的配置类。
- 在微服务架构中,各个服务可能需要不同的配置。使用
- 第三方库集成
- 一些第三方库可能需要特定的配置参数。可以使用
@ConfigurationProperties将这些参数绑定到一个类上,并在应用程序中进行配置。 - 例如,集成一个消息队列时,可能需要配置队列的名称、连接地址等参数,可以创建一个
MessageQueueProperties类来管理这些配置。
- 一些第三方库可能需要特定的配置参数。可以使用
总之,@ConfigurationProperties注解提供了一种方便、灵活的方式来管理应用程序的配置信息,提高了配置的可维护性和可扩展性。
会爆一个警告,但不影响运行
处理方法:添加一个依赖
添加依赖后,我们在配置文件中添加自己的配置时候
会给出相关提示
——————————————————————————————————————————
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118652.html










