SpringBoot源码分析

springboot启动类@SpringBootApplication注解的理解:

@SpringBootApplication就是一个组合注解
其中包含了:
1 . @SpringBootConfiguration : 就是@Configuration注解,代表启动类就是一个配置类.
2. @EnableAutoConfiguration : 帮你实现自动配置的类,SpringBoot工程启动时,会运行一个SpringFactoriesLoader这个类, 加载META-INF/spring.factories配置类 (已经开启的) , 通过SpringFactoriesLoader 中的load方法, 以for循环的方式 ,一个一个加载配置 .
3. @ ComponentScan : 组件包扫描. 扫描启动类的所属包下的所有的组件.(如@Controller)

SpringBoot自动装配的原理:

一 . springboot在启动时会加载大量的自动装配类( XxxAutoConfiguration ) ,但是有的生效了,有的没有生效. 这些自动装配配使用

二 . 我们看我们需要的功能有没有在SpringBoot默认写好的配置类当中;

三. 我们在来看这个自动配置类中到底配置了哪些组件;( 只要我们要用的组件存在其中我们就不需要在手动配置了 )

四 . 给容器中自动配置类添加组件时 , 会从XxxProperties类中获得某些相关的属性.我们只需要在配置文件中指定属性的值即可.

XxxAutoConfiguration: 自动配置类 : 给容器中添加组件
XxxProperties : 封装了配置文件的中的相关属性 : 给组件赋值

总结 : 每一个XxxAutoConfiguration类里面都包含了很多组件bean , 条件成立后都会加载到容器中,这个组件的属性从XxxProperties类中获取 , XxxProperties类中的每一个属性的值, 又和properties进行绑定

简单来说就是 :
=== > springBoot启动
===> 通过SpringFactoriesLoader这个类,加载META-INF/spring.factories ===> spring.factories加载很多的XxxAutoConfiguration类
===> XxxAutoConfiguration中有很多组件,@Conditiona成立后就会被加载到spring容器中
===> 加载到容器后,会从XxxProperties类的属性中获取组件的值
===> 我们可以自定义application.yml对XxxProperties类的属性值进行覆盖.

application.yaml可以写什么?怎么动态修改SpringBoot中的默认的内容的?

在该配置文件中可以配置的东西,都存在一个固有的规律:
1.他一定是xxxProperties的类,
2.在该类中使用@ConfigurationProperties绑定了spring.factories里面的一个XxxAutoConfiguration类

spring.factories的内容:
在这里插入图片描述

application.yaml对一个对象属性的配置:

一,首先使用@Component注解表明该对象所属的类为spring的一个组件
二,需要使用@ConfigurationProperties注解标明该类的配置由yaml中哪个prefix而来
三,在yaml文件中使用yaml语法进行属性的一一对应

person:
  name: zhangsan
  age: 12
  birth: 1997/12/25
  maps: {k1: v1,k2: v2}
  list:
    - music
    - code
    - girls
  dog:
    name: ok
    age: 3
SpringBoot项目中可以写application.yaml的四个位置,其中优先级依次降低

1.项目路径下的config文件夹下
file: ./config/

2.项目路径下的
file: ./

3.类路径下的cnofig文件夹下
classpath: ./config/

4.类路径下( java/resource )的( springBoot项目默认的位置 )
classpath: ./

SpringBoot项目中yaml的多环境配置
spring:
  profiles:
    active: test

---
server:
  port: 8081
spring:
  profiles: dev

---
server:
  port: 8082
spring:
  profiles: test
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值