Spring Boot配置文件和yaml语法

简介: Spring Boot配置文件和yaml语法

🏖️1.全局配置文件

🌈1.1全局配置文件概述

Spring Boot使用一个全局的配置文件,通过配置文件,可以修改Spring Boot自动配置的默认值,配置文件名是固定的,文件名必须是application
配置文件格式properties或者yml,比如application.properties或者application.yml
比如,我们可以通过修改application.properties来自定义服务器的端口号
在这里插入图片描述
我们来新建一个项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🌈1.2配置文件的位置和加载顺序

  • /config/:当前项目根目录下的config目录下
  • /:当前项目的根目录下
  • /resources/config/:resources目录下的config目录下
  • /resources/:resources目录下

加载的优先级是从上到下,由高到低
在这里插入图片描述

🏖️2.多环境配置

开发过程中,至少需要三个环境(开发环境dev-测试环境test-生产环境pro),但是每一个环境的配置都不一样,比如数据库等各种配置,Spring Boot提供多环境配置的机制,让开发者灵活根据需求而切换不同的配置环境
比如:我们可以通过在不同环境下面,服务器端口号不同进行测试

🌈 2.1多环境配置文件

在Spring Boot中多环境配置文件名必须满足:application-{profile}.properties的固定格式。
其中,{profile}对应的是我们的环境标识,比如:
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境

🌈2.2激活某个环境配置

在application.properties文件中添加配置,spring.profiles.active={profile} 来激活
比如:

spring-profiles.active=test  表示开启测试环境

在这里插入图片描述
在这里插入图片描述

🏖️3.yaml

🌈3.1yaml概述

yaml(YAML A/isn't Markup Language),后缀名是.yaml或者.yml。有两层含义

  • YAML是一个标记语言
  • YAML不是一个标记语言

    yaml是以数据为中心,比如json\xml等更适合作为配置文件
    使用#添加注释

# 服务器端口
server:
    port: 8080
当我们创建一个Spring Boot项目的时候,它默认是给的配置文件是.properties的形式,我们也可以把它修改成yaml的形式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🌈3.2基本语法

  • k:(空格)v,表示一对键值对,空格一定要有
  • 用缩进来控制层级关系,只要是左对齐的一列数据,都是同一个层级的
  • 属性和值是区分大小写的
  • 缩进的空格数不重要,但同级元素必须左侧对齐。

    例如:

spring:
  profiles: dev
  
  datasource:
    url: jdbc:mysql://127.0.01/banchengbang_springboot
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

🌈3.3值的写法

YAML 支持以下三种数据结构:

  • 对象:键值对的集合
  • 数组:一组按次序排列的值
  • 字面量:单个的、不可拆分的值

❄️3.3.1字面量

  • 字面量:普通的值(数字,字符串,布尔)

    • 字符串默认不需要加上单引号或者双引号
    • 字符串如果加上双引号,那么转义字符有效
    • 字符串如果加上单引号,那么转义字符只是一个普通的字符串数据
    • 字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期等
name: "zhangsan \n lisi"
# 输出的结果是
zhangsan
lisi
name: 'zhangsan \n lisi'
# 输出的结果是
zhangsan \n lisi
 

❄️3.3.2 日期类型

  • 日期类型

    • 日期格式必须是 :"yyyy/MM/dd"

birth: 1980/6/15

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

### ❄️3.3.3对象
<font color="Red">对象写法方式一:换行缩进

person:
lastName: zhangsan
age: 20
book:

price: 222
<font color="red">对象写法方式二:行内写法

book: {name: java,price: 2000}

### ❄️3.3.4 数组、List、Set
<font size=4>缩进的写法:用<font color="red">-</font>表示数组中的一个元素

pets:

  • cat
  • dog
  • pig
行内写法,外部使用[]表示

pets: [cat,dog,pig]

#  🏖️4.利用配置文件来给属性赋值
## 🌈4.1@Value,通过${}直接获得配置文件的配置值注入
><font size=4>![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/56378f6a3c7e46ec9230f488cfb9f940.png)
>测试
>![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/b3fed4391e3147e99b2c7a940188193d.png)

## 🌈4.2@ConfigurationProperties

<font size=4 color="red">可以让属性和配置文件中的配置自动绑定,需要指明一个prefix(前缀)
><font size=4>先把文件编码方式改成UTF-8![>](https://ucc.alicdn.com/images/user-upload-01/7b6cbf9214d64202a7e876f14670aa74.png)
>还是以刚刚的Book类为例子,我们可以先在pom.xml文件中添加依赖
>![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/1a1ad648f1ff4a24b2b14894942293cd.png)
>加入这个依赖的作用其实是为了便于我们写代码,我们在配置文件中可以看到提示
>![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/ec57033f7b844ba8a78c0848993c1259.png)
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/2ec0f78b0b8145dd9bfbdd1f9011ee81.png)
>测试一下
>![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/d943cf886ca544d28449096048477a2e.png)

## 🌈4.3@EnableConfigurationProperties
+ 方法一:通过@Component注解可以把指定类注入到Spring容器中
+ 方法二:在Spring Boot启动类上,添加@EnableConfigurationProperties,把指定的类注入到Spring容器中,推荐这个方法,便于统一管理
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/72b5c3daea2c463fb65d02ec6bb89544.png)
我们点进这个注解去看看(大家对源码感兴趣的可以自己去深入了解)
![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/2f4f82b9f937456cb764d761a21b886c.png)
## 🌈4.4@PropertySource
<font size=4 color="red">可以指定加载一个独立的配置文件信息
用法:
+ 加载指定的属性文件(*.properties)到 Spring 的 Environment 中。可以配合 @Value 和@ConfigurationProperties 使用。
+ @PropertySource 和 @Value
组合使用,可以将自定义属性文件中的属性变量值注入到当前类的使用@Value注解的成员变量中。
+ @PropertySource 和 @ConfigurationProperties
组合使用,可以将属性文件与一个Java类绑定,将属性文件中的变量值注入到该Java类的成员变量中。
 
><font size=4>比如说,我们本来是在全局配置文件中指定那些属性的信息,但是可能有很多需要配置,这个时候,我们可以把这些抽取出来,成为一个个小的配置文件,但是要注意的是,这个时候,这些配置文件==只能是properties形式的==,不能是yaml形式的
>![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/7ba1389fd0c748b7922e0f0ed4ef3394.png)
>![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/65bdf657ac3c48ee81c12dd7c1e69cc9.png)
><font color="red">有一个地方需要注意,这里的话,我们得使用@Component注解,如果使用@EnableConfigurationProperties进行注入的话,其实我们在测试的时候,会发现属性是null


# 🏖️5.自定义配置类
><font size=4>从Spring3.0,==@Configuration用于定义配置类==,可以替换xml配置文件,被注解的类内部包含有一个或多个被<font color="red">@Bean</font>注解的方法,这些方法的返回值会被创建实例,托管给Spring容器
 
  ## 🌈5.1@Configuration
  ><font size=4>@Configuration标注在类上面,相当于把这个类作为Spring的xml配置文件中的``<bean> ``,作用是配置spring容器(应用上下文)
  ><font color="red">@Configuration注解的配置类有下面的几个要求:
  >1️⃣不可以是final类型
  >2️⃣不可以是匿名类
  >3️⃣嵌套的configuration必须是静态类
  
  ## 🌈5.2@Bean
  ><font size=4>@Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的<font color="red">\<bean>,作用是注册bean对象
  
  ## 🌈5.3代码演示
  ><font size=4>我们先写一个实体类Stu
  >![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/36f9a90960274e56bba0b4db2c52ad40.png)
  >然后写一个自定义的配置类
  >![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/a0c8bd22024e4f49ad43ba62396644b0.png)
  >测试
  >![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/d476b7e8e015495998913e02b632076a.png)
## 🌈5.4查看启动类的注解
><font size=4>![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/d09e8347dc114ed3bfdaf016e83134df.png)
>点进去@SpringBootApplication注解
>![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/77ed66d4041048a7ac45bd35f9abea1c.png)
>我们可以看到里面有@ComponentScan(包扫描)和@SpringBootConfiguration(继承于@Configuration),这样子就会把扫描到的包下面的类注入到spring容器中


相关文章
|
4月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
477 3
|
11月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2764 1
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
2942 17
Spring Boot 两种部署到服务器的方式
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
Java 测试技术 应用服务中间件
Spring Boot 配置文件总结
Spring Boot 提供全局配置文件 `application.properties` 和 `application.yml`,用于修改自动配置的默认值。前者使用键值对配置,后者使用缩进和冒号。不同环境(开发、测试、生产)可切换配置文件,通过 `spring.profiles.active` 指定。例如,开发环境端口为4790,测试环境为4791,生产环境为4792。配置示例展示了属性、List、Map定义及引用方法。
422 14
|
11月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
500 0
|
Java 数据库连接 数据库
springboot启动配置文件-bootstrap.yml常用基本配置
以上是一些常用的基本配置项,在实际应用中可能会根据需求有所变化。通过合理配置 `bootstrap.yml`文件,可以确保应用程序在启动阶段加载正确的配置,并顺利启动运行。
1868 2
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
957 2
|
Java Spring 容器
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
3040 3