Springboot基础篇---part02-配置文件及自动配置原理

配置文件

SpringBoot使用一个全局的配置文件,配置文件有两种形式

  • application.properties
  • appliciation.yml
    k:v :在下一行来写对象的而实行和值得关系,注意缩进
    对象还是k:v的方式

@Value和@ ConfigurationProperties获取值得区别

@ ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(例:last-name/lastName)支持不支持
SpEL(例:计算公式)不支持支持
JSR303数据校验(例:规定数据格式@Email)支持不支持
复杂类型封装支持不支持

总结: 配置文件yml还是properties都能获取到值;
如果,只是在某个业务罗矩阵需要获取配置文件中得某项值,使用@Value
如果,我们专业编译了一个javaBean来和配置文件进行映射@ ConfigurationProperties;

@PropertySource:加载指定的配置文件
@PropertySource(valiue= {"classpath:person.properties"}
@ImportResource

导入Spring的配置文件,让配置文件里的内容生效;
Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别,想让Spring的配置文件生效加载进来;
@ImportResource(locations = {“classpath:beans.xml”}
导入Spring 的配置文件让让其生效

@Profile

1.多Profile文件
在主配置文件编写的时候,文件名可以使application-{Profile}.properties/yml 默认使用application.properties的配置
2.yml支持多文档块方式
 server:
     port:8081
 spring:
     profiles:
       active:prod  //此时激活的是prod方式

---
 server:
     port:8083
 spring:
     profiles:dev


---
 server:
     port:8084
 spring:
     profiles:prod


3.激活制定Profile
  1. 在配置文件中制定 spring.profiles.active=dev

  2. 命令行:
    (打包后) java -jar spring-boot-02-config-0.01-SNAPSHOT.jar --spring.profiles.active=dev;
    或者直接在测试时,配置传入命令行参数
    在这里插入图片描述
    3.虚拟机参数
    在这里插入图片描述

    配置文件加载位置

    springboot启动会扫描一下位置的application.properties或application.yml文件作为 Spring boot 的默认配置
    -file:./config/
    -file:./
    -classpath:/config/
    -classpath:/
    以上是按照优先级从高到低的顺序,所有未知的文件都会被加载,高优先级配置内容会覆盖低优先级配置内容;互补配置
    == 也可以通过spring.config.location来改变默认的配置文件位置==
    项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些文件共同起作用形成互补配置!
    ------------------------------------------------------------------------------------------------------------------------------

自动配置原理

1.Springboot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration
2.@EnableAutoConfiguration作用:

  • 利用EnableAutoConfigurationImportSelector给容器中导入组件
  • 可以加减selectImports()方法的内容
  • List configurations=getCandidateConfigurations(annotationMetadata, attributes);获取候选的配置

    SpringFactoriesLoader.loadFatoryNames( )
    扫描所有jar包类路径下 META-INF/spring.factories
    把扫描到的这些文件的内容包装秤properties对象
    从properties中获取到EnableAutoConfiguration.class类(类名)对应的值,然后把他们添加到容器中

将类路径下 META-INF/spring.factories里面配置的所有的EnableAutoConfiguration的值加入到容器中
每一个这样的 xxxAutoConfiguation类都是容器中的一个组件,都加入到容器中;用他们来做自动配置;
3.每一个自动配置类进行自动配置功能
4.以**HttpEncodingAutoConfiguration(Http编码自动配置)**为例解释自动配置原理
在这里插入图片描述
精简 :
1.SpringBoot启动会加载大量的自动配置类
2.看需要的功能有没有SpringBoot默认写好的自动配置类
3.看这个自动配置类中到底配置了那些组件
4.给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。可以在配置文件中指定这些属性的值。
(xxxxAutoConfiguration:自动配置类;给容器中添加组件;;;;xxxxProperties:封装配置文件中相关属性;)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值