SpringBoot学习笔记(四)配置文件,属性注入,自动配置

配置文件

yml 后缀和 propertices 后缀

语法不同

看看达成同一个目的:修改端口号, 他们分别是怎么写的

在 propertices 后缀的文件中:
在这里插入图片描述

在 yml 文件中

在这里插入图片描述
yml 写法的优点: 当配置文件中需要写的东西多起来的时候, yml 的这种结构看起来会有一种一目了然的感觉

特别注意: 这种写法与 Python 的缩进相似,被严格区分空格

当然,propertices 和 yml 的文件按照规则可以相互转换,而且,最终实现的效果一样

加载顺序

y 和 p

在 spring-boot-parent 中是这么描述的
在这里插入图片描述
在加载配置文件的时候, yml 比 properties 先加载

但是,如果两份文件中有相同的东西,那么,properties 中的将会覆盖 yml 中的
所以,就会出现,同时存在 properties 文件和 yml 文件时,重复项以 properties 中的配置为主的现象

而两份文件中不同的地方则会相互补充

总结起来就是:相同用 p ,不同用 y

看看下面这个例子:

在这里插入图片描述

在这里插入图片描述

我在两个文件里面分别配置了不同的端口号,最终启动的结果是这样

在这里插入图片描述
以 8009 端口初始化 Tomcat

其他

参考官方文档
在这里插入图片描述

@Profile()

用来指定某个地方使用哪个预配置文件进行解析

看下面这个实验

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

请先注意上面两张图 7, 14 两行不同的地方

顺路解释下这个配置文件目录的问题

注意下面两张图
在这里插入图片描述
在这里插入图片描述
resources 文件夹下面如果再建立一个 config 文件夹,则会使用到这个里面设定好的配置文件,外面那个 application.properties 呢就暂时不会用到

所以,启动的时候,会发现使用的是 8081 端口
在这里插入图片描述

回到实验

启动之后,打开网页,输入
在这里插入图片描述
在配置文件是这样时
在这里插入图片描述

出现这样的结果
在这里插入图片描述
如果将第三行改成 pro
在这里插入图片描述
则出现这样的结果
在这里插入图片描述

指定运行时使用的配置文件

在笔记(二)中运行 jar 包的基础上,在后面添加

总结

用的最多的形式,就是在 resources 这个文件夹里面放一个配置文件

属性注入

前提条件:

pom 文件中有这一段

在这里插入图片描述

松散绑定:

原名字:username

  1. USERNAME
  2. user-name
  3. user_name
  4. userName

以这四种方式其中一种在 yml 文件中导入数据,都可以
在这里插入图片描述

也就是在上图中,将 username 改成4种中其中的一种,都没问题

@ConfigurationProperties

在这里插入图片描述
有了上图这个,就不需要再在每个变量前面加 @Value 了
在这里插入图片描述
本模块 (不是父项目)的 pom.xml 文件中插入前提条件中的那一段,还可以在设置 yml 文件中获得类似自动补全的效果
在这里插入图片描述
特别注意:

数组(多个值的集合),Date 类,使用下面的方式进行赋值
在这里插入图片描述

数组也可写成中括号的形式,像 Python 里面的列表一样

有趣的东西:

在这里插入图片描述
实现这个的前提是 Address 类中有 toString 函数

自动配置

官方文档里面有

这个是最傻瓜化的

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties

@EnableAutoConfiguration

部分流程
在这里插入图片描述
最终实现扫描的时候,通过键值对的方式寻找相应的所需要的文件的路径,在 jar 包下面的 meta-inf 的文件夹中

启动自动配置类的方式

启动类上加这个@EnableAutoConfiguraion

@AutoConfigurationPackage

自动配置相关的包

@EnableConfigurationProperties()

括号里面填写的类表示,在 yml 等配置文件中,能写什么

这些配置好的东西,是怎么读取进来的?

  1. 通过 loadfactoriesName 这个函数调用 loadspringfactories
  2. loadspringfactories 读取 jar 包
  3. 进入 jar 包中的 meta-inf 文件夹,读取后缀为 factories 的文件
  4. 最后,读取的结果以 map <string, List< string > > 这种形式呈现

所以,入股需要自定义启动器,则需要在 jar 包下的 meta-inf 文件夹中加 spring.properties 文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值