0


【框架篇】Spring Boot 配置文件(详细教程)

在这里插入图片描述

Spring Boot 配置文件

在这里插入图片描述


一,配置文件的用途

配置文件在Spring Boot项目中的地位是比较重要,其功能可主要归纳为以下几个:

  1. 进行配置程序属性:配置文件允许设置应用程序的各种属性,如数据库连接、端口号、日志级别、缓存配置等。通过配置文件,可以集中管理和修改这些属性,而不需修改代码。
  2. 进行环境特定配置:配置文件可以根据不同的环境(如开发、测试、生产环境)指定不同的配置,以满足不同环境下的需求。通过切换不同的配置文件,应用程序可以适应不同的运行环境。
  3. 进行细粒度配置:配置文件可以提供细粒度的配置,允许逐个组件进行配置,例如数据库连接池、缓存配置、日志配置等。这样每个组件可以根据自己的需求进行个性化配置。
  4. 进行外部化配置:配置文件使配置信息外部化,不需要硬编码到应用程序代码中。这样使得应用程序更加灵活和可维护,可以在不重新编译应用程序的情况下更改配置。
  5. 进行密文配置:配置文件可以用于存储敏感信息,如密码或者API密钥。可以通过加密或其他安全机制来保护这些敏感信息,确保配置文件的安全性。

二,配置文件的格式

2.1,配置文件格式介绍

Spring Boot 项目配置文件的格式有两种,分别为:

1,Properties格式

用法:Properties格式使用键值对的方式进行配置,每个配置项使用

key=value

的格式。可以通过

.properties

文件扩展名来标识使用此格式的配置文件,例如

application.properties

。在文件中,可以配置多个属性,使用#作为注释符号。

优点:Properties格式使用简单的键值对,易于理解和书写。对于简单的配置需求,Properties格式足够满足要求。

缺点:Properties格式缺乏层级结构的表示能力,难以表达复杂配置。并且随着配置项的增多,Properties格式的可读性会变差。

示例:在配置文件中设置端口号和建立数据库连接。

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=secret

2,YAML格式

用法:YAML格式以层级结构的方式进行配置,使用缩进和冒号来表示层级关系。可以通过

.yml

.yaml

文件扩展名来标识使用此格式的配置文件,例如

application.yml

。在文件中,可以使用缩进和冒号定义各级配置,注意冒号与值之间存在个空格。

优点:YAML格式支持层级结构,可以更好地表达复杂配置,如嵌套配置、列表、块等。并且该格式采用缩进的语法,易于阅读和维护。

缺点:YAML格式对缩进和冒号的使用有严格的要求,如果没有正确缩进或冒号使用错误可能导致配置解析问题,需要一定的学习成本。

示例:在配置文件中设置端口号和建立数据库连接。

server:port:8080spring:datasource:url: jdbc:mysql://localhost:3306/mydatabase
    username: root
    password: secret

总结:Properties格式适合简单配置和快速编写,而YAML格式则更适合复杂配置和可读性强的情况。选择哪种格式可以根据项目需求和个人偏好来决定。

系统配置项查看网址:Common Application Properties (spring.io)


2.2,文件格式特殊说明

配置文件格式的特殊说明

1,两种配置文件是可以同时存在的,但是在企业中通常会规定项目使用这其中的一种格式作为项目配置文件的格式。

2,如果一个配置项在两种配置文件中都进行了设置,以

.properties

为后缀的配置文件为主。

3,

.properties

配置文件的优先级最高,但加载完

.properties

配置文件之后,也会加载

.yml

配置文件的配置信息。


三,配置文件的使用

3.1,读取配置文件的内容

在项目中,主动的读取配置文件中的内容,可以使用

@Value

注解来实现,@Value 注解使用

"${}"

的格式读取。

示例:读取

application.properties

配置文件中设置的端口号

**1,

application.properties

配置文件中设置的端口号信息:**

image-20230715105605968

2,编写读取配置文件在的端口号代码,示例代码:

packagecom.example.springboot.component;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Component;importjavax.annotation.PostConstruct;@ComponentpublicclassReadProperties{@Value("${server.port}")privateString port;@PostConstructpublicvoiddoPostConstruct(){System.out.println("server.port = "+ port);}}

代码说明:

@Component

注解:在 Spring Boot启动时候将

ReadProperties

类注入到框架中,

@PostConstruct

注解:类注入到框架中时会执行

doPostConstruct

初始化方法,这个时候就能读取到配置信息了。

3,运行编写好的示例代码,查看到如下运行结果:

image-20230715110128120

读取配置文件的多种方式:SpringBoot 有几种读取配置文件的方法?


3.2,配置项加不加引号区别

1,不使用引号(裸值)

用法:在配置文件中,通常不需要使用引号将值括起来。这种情况下,值会被解析为相应的数据类型,如字符串、整数、布尔值等。

使用环境:适用于不包含特殊字符的情况。

myapp.name=My Application
myapp.port=8080
myapp.enabled=true

2,单引号(‘’)

用法:单引号可以用来保留配置值中的空格或特殊字符。其中的值将按照原样进行解析,包括空格。

使用环境:适用于需要保留空格、特殊字符或原始格式的配置值,如文件路径、密码或命令行参数。

myapp.name='My Application'
myapp.description='This is my "awesome" application.'
myapp.author='Traceless'

3,双引号(“”)

用法:双引号可以用于提供字符串类型的配置值。其中的值将进行解析和处理,可以包含占位符或转义字符。

使用环境:适用于需要进行变量替换或使用转义字符的配置值。

myapp.name="My Application"
myapp.description="This is my \"awesome\" application."
myapp.author="Traceless"

总结:具体使用哪种引号取决于要实现的功能和期望的字符串处理方式。例如,如果需要对变量进行替换或特殊字符转义,双引号是更适合的选择。单引号则保持字符串的原样,适用于需要保留特殊字符字面值的情况。。


3.3,设置不同环境的配置文件

在实际开发中,一个项目存在多种不同环境的配置文件,例如开发环境配置文件,测试环境配置文件,生产环境配置文件 …

Spring Boot 项目在不同平台上的环境配置规则:

  1. 必须存在主配置文件,主配置文件名必须为application.propertion 或者 application.yml
  2. 每个平台都存在一个专属配置文件,配置文件名有要求,需遵循application-xxx.propertion(.yml)格式。

设置不同环境的配置文件示例:现有个项目,项目中存在开发环境,测试环境,生产环境的配置文件,而每个配置文件端口号不同,现在需要进行项目的测试操作,所以我们切换使用测试环境的配置文件。

1,项目主环境和各环境的配置文件配置如下:

image-20230715115953309

2,项目启动检测环境配置是否切换至测试生产环境,查看端口号为8888,说明切换成功。

image-20230715115658515


结语

这就是本期博客的全部内容啦!如果有什么其他的问题无法自己解决,可以在评论区留言哦!

最后,如果你觉得这篇文章写的还不错的话或者有所收获的话,麻烦小伙伴们动动你们的小手,给个三连呗(点赞👍,评论✍,收藏📖),多多支持一下!各位的支持是我最大的动力,后期不断更新优质的内容来帮助大家,一起进步。那我们下期见!

在这里插入图片描述


标签: spring boot spring java

本文转载自: https://blog.csdn.net/m0_64338546/article/details/131840030
版权归原作者 小杨MiManchi 所有, 如有侵权,请联系我们删除。

“【框架篇】Spring Boot 配置文件(详细教程)”的评论:

还没有评论