[6-02-01].第05节:配置文件 - YAML配置文件语法

发布于:2025-07-01 ⋅ 阅读:(23) ⋅ 点赞:(0)

SpringBoot学习大纲


一、YAML语法

1.1.概述:

  • 1.YAML是一种数据序列化格式
  • 2.它是以数据为中心
  • 3.容易阅读,容易与脚本语言交互,如下图所示:
    在这里插入图片描述

1.2.基本语法

  • 1.key: value:kv之间有空格
  • 2.使用缩进表示层级关系
  • 3.缩进时候不可以使用tab键,只可以使用空格
  • 4.缩进的空格数量不重要,重要的是相同层级的元素只要在缩进后可以齐就可
  • 5.属性和值中:大小写敏感
  • 6.#表示注释
  • 7.字符串不需要加引号:当属性中如果出现了某些特殊的字符,就可以使用双引号包裹起来作为字符解析
    • 单引号会将\n作为字符串输出
    • 双引号会将\n作为换行输出,双引号会改变它的行为,作为换行,单引号不会改变它的行为(双引号会转义,单引不号会转义
      在这里插入图片描述

2.3.数据类型

  • 1.字面量:单个的、不可再分的值:date、boolean、string、number、null
k: v

在这里插入图片描述

  • 2.对象:键值对的集合。map、hash、set、object
行内写法:  k: {k1:v1,k2:v2,k3:v3}
#或
 k: 
	k1: v1
    k2: v2
    k3: v3
  • 3.数组:一组按次序排列的值。array、list、queue
行内写法: 
 k: [v1,v2,v3]
#或者
k:
 - v1
 - v2 - v3

在这里插入图片描述


二、配置文件说明:

2.1.配置位置

  • 1.SpringBoot 项目最重要也是最核心的配置文件就是 application.properties
  • 所有的框架配置都可以在这个配置文件中说明
#SPRING CONFIG(ConfigFileApplicationListener)
spring.config.name =#配置文件名(默认 为 'application' )
spring.config.location =#配置文件的位置

# 多环境配置文件激活属性
spring.profiles.active=dev #加载 application-dev.properties 配置文件内容
application-dev.properties: #开发环境
application-test.properties: #测试环境
application-prod.properties: #生产环境

#activemq
spring.activemq.broker-url #指定 ActiveMQ broker 的 URL,默认自动生成. spring.activemq.in-memory #是否是内存模式,默认为 true. spring.activemq.password #指定 broker 的密码. spring.activemq.pooled #是否创建 PooledConnectionFactory ,而非
ConnectionFactory,默认 false
spring.activemq.user #指定 broker 的用户.

#aop
spring.aop.auto #是否支持@EnableAspectJAutoProxy,默认为: true
spring.aop.proxy-target-class #true 为使用 CGLIB 代理,false 为 JDK 代理,默认为 false

#application
spring.application.admin.enabled #是否启用 admin 特性,默认为: false
spring.application.admin.jmx-name #指定 admin MBean 的名称,默认为:
org.springframework.boot:type=Admin,name=SpringApplication

#artemis(HornetQ 捐献给 apache 后的版本)
spring.artemis.embedded.cluster-password #指定集群的密码,默认是启动时随机生成. spring.artemis.embedded.data-directory #指定 Journal 文件的目录.如果不开始持
久化则不必要指定. spring.artemis.embedded.enabled #是否开启内嵌模式,默认 true
spring.artemis.embedded.persistent #是否开启 persistent store,默认 false. spring.artemis.embedded.queues #指定启动时创建的队列,多个用逗号分隔,默认: []
spring.artemis.embedded.server-id #指定 Server ID. 默认是一个自增的数字,
从 0 开始. spring.artemis.embedded.topics #指定启动时创建的 topic,多个的话逗号分韩顺平 Java 工程师隔,默认: []
spring.artemis.host #指定 Artemis broker 的 host. 默认: localhost
spring.artemis.mode # 指 定 Artemis 的 部 署 模 式 , 默 认 为
auto-detected(也可以为 native or embedded). spring.artemis.port #指定 Artemis broker 的端口,默认为: 61616

#autoconfig
spring.autoconfigure.exclude #配置要排除的 Auto-configuration classes. #batch
spring.batch.initializer.enabled #是否在必要时创建 batch 表,默认为 true
spring.batch.job.enabled #是否在启动时开启 batch job,默认为 true
spring.batch.job.names #指定启动时要执行的 job 的名称,逗号分隔,默认所有 job 都会被执行
spring.batch.schema # 指 定 要 初 始 化 的 sql 语 句 路 径 , 默认:classpath:org/springframework/batch/core/schema-@@platform@@.sql)
spring.batch.table-prefix #指定批量处理的表的前缀.

#cookie、session 配置
server.session.cookie.comment #指定 session cookie 的 comment
server.session.cookie.domain #指定 session cookie 的 domain
server.session.cookie.http-only #是否开启 HttpOnly. server.session.cookie.max-age #设定 session cookie 的最大 age. server.session.cookie.name #设定 Session cookie 的名称. server.session.cookie.path #设定 session cookie 的路径. server.session.cookie.secure #设定 session cookie 的“Secure” flag. server.session.persistent #重启时是否持久化 session,默认 false
server.session.timeout #session 的超时时间
server.session.tracking-modes #设定 Session 的追踪模式(cookie, url, ssl).

#datasource
spring.dao.exceptiontranslation.enabled # 是 否 开 启
PersistenceExceptionTranslationPostProcessor,默认为 true
spring.datasource.abandon-when-percentage-full #设定超时被废弃的连接占到多少比例时要被关闭或上报
spring.datasource.allow-pool-suspension #使用 Hikari pool 时,是否允许连接池

..................................

2.2.修改默认配置:

  • 1.各 种 配 置 都 有 默 认 , 可 以 在 resources\application.properties 修 改 ,application.properties 文件我们可以手动创建
#默认 server.port=8080
server.port=10000
#比如: 默认 spring.servlet.multipart.max-file-size=1MB
#该属性可以指定 springboot 上传文件大小的限制
#默认配置最终都是映射到某个类上,比如这里配置会映射到 MultipartProperties
#把光标放在该属性,ctrl+b 就可以定位该配置映射到的类
spring.servlet.multipart.max-file-size=10MB

2.3.常用配置

#端口号
server.port=10000
#应用的上下文路径(项目路径)
server.servlet.context-path=/allModel

#指定 POJO 扫描包来让 mybatis 自动扫描到自定义的 POJO
mybatis.type-aliases-package=com.cxs.allmodel.model
#指定 mapper.xml 的路径
#(application 上配置了@MapperScan(扫面 mapper 类的路径)和 pom.xml 中放行了 mapper.xml 后,
# 配 置 mapper-locations 没 有 意 义 。 如 果 mapper 类 和 mapper.xml 不 在 同 一 个 路 径 下 时 ,
mapper-locations 就有用了)
mybatis.mapper-locations=classpath:com/cxs/allmodel/mapper
#session 失效时间(单位 s)
spring.session.timeout=18000
#数据库连接配置
#mysql 数据库 url
mysql.one.jdbc-url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=Asia/Shanghai&useSSL=false
#mysql 数据库用户名
mysql.one.username=
#数据库密码
mysql.one.password=
#线程池允许的最大连接数
mysql.one.maximum-pool-size=15
#日志打印:日志级别 trace<debug<info<warn<error<fatal 默认级别为 info,即默认打印 info 及其以
上级别的日志
#logging.level 设置日志级别,后面跟生效的区域,比如 root 表示整个项目,也可以设置为某个包下,
也可以具体到某个类名(日志级别的值不区分大小写)
logging.level.com.cxs.allmodel.=debug
logging.level.com.cxs.allmodel.mapper=debug
logging.level.org.springframework.web=info
logging.level.org.springframework.transaction=info
logging.level.org.apache.ibatis=info
logging.level.org.mybatis=info
logging.level.com.github.pagehelper = info
logging.level.root=info
#日志输出路径
logging.file=/tmp/api/allmodel.log
#配置 pagehelper 分页插件
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
#jackson 时间格式化
spring.jackson.serialization.fail-on-empty-beans=false
#指定日期格式,比如 yyyy-MM-dd HH:mm:ss,或者具体的格式化类的全限定名
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#指定日期格式化时区,比如 America/Los_Angeles 或者 GMT+10
spring.jackson.time-zone=GMT+8
#设置统一字符集
spring.http.encoding.charset=utf8
#redis 连接配置
# redis 所在主机 ip 地址
spring.redis.host=
#redis 服务器密码
spring.redis.password=
#redis 服务器端口号
spring.redis.port=
#redis 数据库的索引编号(0 到 15)
spring.redis.database=14
## 连接池的最大活动连接数量,使用负值无限制
#spring.redis.pool.max-active=8
#
## 连接池的最大空闲连接数量,使用负值表示无限数量的空闲连接
#spring.redis.pool.max-idle=8
#
## 连接池最大阻塞等待时间,使用负值表示没有限制
#spring.redis.pool.max-wait=-1ms
#
## 最小空闲连接数量,使用正值才有效果
#spring.redis.pool.min-idle=0
#
## 是否启用 SSL 连接. ##spring.redis.ssl=false
#
## 连接超时,毫秒为单位
#spring.redis.timeout= 18000ms
#
## 集群模式下,集群最大转发的数量
#spring.redis.cluster.max-redirects=
#
## 集群模式下,逗号分隔的键值对(主机:端口)形式的服务器列表
#spring.redis.cluster.nodes=
#
## 哨兵模式下,Redis 主服务器地址
#spring.redis.sentinel.master=
#
## 哨兵模式下,逗号分隔的键值对(主机:端口)形式的服务器列表
#spring.redis.sentinel.nodes= 127.0.0.1:5050,127.0.0.1:5060

2.4.自定义配置

  • 1.还可以在 properties 文件中自定义配置,通过@Value("${}")获取对应属性值
application.properties 文件
my.website=https://www.baidu.com
  • 2.通过bean实例获取配置文件中的值:
//某个 Bean
@Value("${my.website}")
private String bdUrl;

三、配置生效:

3.1.分析条件配置规则

  • 1.下面是条件配置规则(@Conditionalxxxxxxx)来决定是否进行启动的举例:
    在这里插入图片描述
    在这里插入图片描述

3.2.修改SpringBoot的默认配置:

  • 1.官网查看可以配置的属性
  • 2.SpringBoot默认会在底层配好所有的组件。@ConditionalOnMissingBean注解就实现了如果用户自己配置了就以用户的优先
  • 3.如下给容器中加入了文件上传解析器:
        @Bean
		@ConditionalOnBean(MultipartResolver.class)  //容器中有这个类型组件
		@ConditionalOnMissingBean(name = DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME) //容器中没有这个名字 multipartResolver 的组件
		public MultipartResolver multipartResolver(MultipartResolver resolver) {
            //给@Bean标注的方法传入了对象参数,这个参数的值就会从容器中找。
            //SpringMVC multipartResolver。防止有些用户配置的文件上传解析器不符合规范
			// Detect if the user has created a MultipartResolver but named it incorrectly
			return resolver;
		}
  • 3.说明:
    • 在@Bean标注的方法multipartResolver()方法上,我们传入了对象参数,只要配置了参数,这个参数的值就会从容器中找
    • 之所以在容器找事为了防止有些用户配置的文件上传解析器不符合规范,然后我们通过查找,然后找到之后就进返回一个符合规范的名称