SpringBoot注解---00.配置文件

改变默认配置Spring Boot使用一个全局的配置文件

  1. application.properties
  2. application.yml

配置文件放在src/main/resources目录或者类路径/config

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好。

一、yaml

1.简介

.yml是YAML(YAML Ain't Markup Language)语言的文件,以数据为中心,比json、xml更适合做配置文件

YAML XML
1
2
server:
    port: 8081
1
2
3
<server>
    <port>8081</port>
</server>

2.语法

2.1 基本写法

​ ① k:(空格)v:表示一对键值对(空格必须有);

 ②以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的。

​ ③ 属性和值是大小写敏感

​ ④ '#'表示注释

​ ⑤ 缩进不允许使用tab,只允许空格

2.2 数据类型支持

​①字面量:普通的值(数字、字符串、布尔)

字面直接来写:k: v

字符串默认不用加上单引号或者双引号

"":双引号;不会转移字符串里面的特殊字符;特殊字符会作为本身想表示的意思

name:"zhangsan \n lisi" --> 输出:zhangsan 换行 lisi

'':单引号,会转义特殊字符,特殊字符最终只是一个普通的字符串数据

name:'zhangsan \n lisi' --> 输出:zhangsan \n lisi

②对象、Map(属性和值)(键值对)

k: v:在下一行来写对象的属性和值的关系,注意缩进

对象还是k: v的方式;

1
2
3
friends:
    lastName:zhangsan
    age:20

行内写法:

1
friends: {lastName: zhangsan,age: 20}

③数组(List,Set)

用-值表示数组中的一个元素

1
2
3
4
pets:
    - cat
    - dog
    - pid

行内写法:

1
pets: [cat,dog,pig]

3.yaml配置文件值注入

3.1 javaBean

3.2 配置文件注入属性

1
2
3
4
5
6
<!--在项目Pom中导入配置文件处理器,配置文件进行绑定就会有提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

3.3 注解@Value注入属性

3.4 @Value获取值和@ConfigurationProperties获取值比较

  @ConfigurationProperties @Value  
功能

批量注入配置文件中的属性

  1. 与@Bean结合为属性赋值
  2. 与@PropertySource结合读取指定文件
  3. 默认从全局配置文件中获取值
一个个指定  
松散绑定(松散语法) 支持 不支持

 

  • - person.firstName:使用标准方式
  • - person.first-name:大写用-
  • - person.first_name:大写用_
  • - PERSON_FIRST_NAME:推荐系统属性使用这种写法
SpEL(表达式) 不支持 支持  
JSR303数据校验 支持 不支持
复杂类型封装 支持 不支持  

配置文件yml和properties都能获取到值,若我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,用@Value;若我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties

3.5 @PropertySource&@ImportResource&@Bean

① @PropertySource:加载指定的配置文件

② @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效

Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件不能被自动识别,想让Spring的配置文件生效(加载进来),@ImportResource标注在一个配置类上

③ @bean

SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式

  1. 配置类@Configuration------>Spring配置文件
  2. 使用@Bean给容器中添加组件

4.propertyies配置文件值获取

① RandomValuePropertySource:配置文件可以使用强随机数

random.value{random.int}、random.long{random.int(10)}、${random(1024,65536)}

② 属性配置占位符

1
2
app.name=MyApp
app.description=${app.name} is a Spring boot applicatio

- 可以在配置文件中引用前面配置过的属性(优先级前面配置过的这里都能用)

- ${app.name:默认值}来指定找不到属性时的默认值。

5.Profile多环境支持

Profile是Spring对不同环境提供不同配置功能的支持,可以通过激活、指定参数等方式快速切换环境。

① 多profile文件形式

- 形式:application-{profile}.properties

application-dev.properties、application-prod.properties

② 多profile文档块模式

③ 激活方式

- 命令行 java -jar xxx.jar --spring.profile.active=dev

- 配置文件 spring.profile.active=dev

- jvm参数 -Dspring.profiles.active=dev

6.配置文件加载位置

spring boot启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

- file:./config/

- file:./

- classpath:/config/

- classpath:/

以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容,形成“互补配置”。

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置。

1
2
3
4
5
6
7
server.port: 8094
 
#配置项目的访问路径
server.context-path: /nxf
 
#改变默认配置
spring.config.location: D:/8_code_LogQuerySystem/nxf/application.yml 

7.外部配置加载顺序

SpringBoot也可以从以下位置加载配置;优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。

1.命令行参数

java -jar xxx.jar --server.port=8087 --server.context-path=/abc

多个配置用空格分开;--配置项-值

6-9.由jar包外向jar包内进行寻找:

优先加载带profile:6-7 

再来加载不带profile:8-9

8.自动配置原理

 

 

 

参考链接:

【1】SpringBoot配置文件基本配置介绍

 

posted @   nxf_rabbit75  阅读(311)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
历史上的今天:
2018-11-30 pandas中的axis=0,axis=1,傻傻分不清楚
2018-11-30 numpy排序(sort、argsort、lexsort、partition、sorted)
2018-11-30 numpy的prod()函数和pad()函数
一、yaml1.简介2.语法2.1 基本写法2.2 数据类型支持​①字面量:普通的值(数字、字符串、布尔)②对象、Map(属性和值)(键值对)③数组(List,Set)3.yaml配置文件值注入3.1 javaBean3.2 配置文件注入属性3.3 注解@Value注入属性3.4 @Value获取值和@ConfigurationProperties获取值比较3.5 @PropertySource&@ImportResource&@Bean① @PropertySource:加载指定的配置文件② @ImportResource:导入Spring的配置文件,让配置文件里面的内容生效③ @bean4.propertyies配置文件值获取① RandomValuePropertySource:配置文件可以使用强随机数② 属性配置占位符5.Profile多环境支持① 多profile文件形式② 多profile文档块模式③ 激活方式6.配置文件加载位置7.外部配置加载顺序8.自动配置原理
点击右上角即可分享
微信分享提示