SpringBoot自动配置原理及使用流程

SpringBoot自动配置原理及使用流程

SpringBoot自动配置原理

在这里插入图片描述

具体流程

1、导入场景

以starter-web为例

  • 场景启动器导入了相关场景的所有依赖,如:starter-json,starter-tomcat,spring-webmvc

  • 每个场景启动器都引入了一个spring-boot-starter,核心场景启动器。

    在这里插入图片描述

  • 核心场景启动器引入了spring-boot-autoconfigure依赖,它的作用是自动配置Spring应用程序。

    在这里插入图片描述

2、编写主程序

使用@SpringBootApplication注解标注,说明它是一个SpringBoot项目。

  • @SpringBootApplication由三个注解组成:@SpringBootConfiguration,@EnableAutoConfiguration@ComponentScan

  • SpringBoot默认只能扫描自己主程序所在包及其子包,扫描不到spring-boot-autoconfigure包中官方写好的配置类。(在External Libraries)

    在这里插入图片描述

  • @EnableAutoConfiguration:SpringBoot开启自动配置的核心。注解内容主要包括:

    在这里插入图片描述

    • @Import(AutoConfigurationImportSelector.class)提供自动功能:批量给容器注入组件。

    • SpringBoot启动会默认加载146个配置类,这146个配置类来自于spring-boot-autoconfigure下的META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

      在这里插入图片描述

    • 项目启动的时候利用@Import批量导入组件机制把autoconfigure包下的146个xxxAutoConfiguration类导入进来(自动配置类)

    • 虽然导入了146个自动配置类,但不会都生效,会按需生效,里面包含@ConditionalOnClass…(条件注解),只有在满足条件的时候才会进行下一步的操作。

      在这里插入图片描述

总结

SpringBoot的核心流程包括如下的几个步骤。

  1. 导入starter,就会导入autoconfigure
  2. autoconfigure包有META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,里面制定了所有启动要加载的自动配置类
  3. @EnableAutoConfiguration会自动的把上面文件中所有的自动配置类(xxxAutoConfiguration)导入
  4. xxxAutoConfiguration会给容器中导入一堆组件,组件都是从xxxProperties中提取属性值
  5. xxxProperties和配置文件进行绑定的

SpringBoot的使用流程

1、选场景

官方starter:https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.build-systems.starters

第三方:https://mvnrepository.com/

在这里插入图片描述

2、写配置

改配置文件关键项,如数据库参数。(如下:redis的自动配置类,可以双击shift搜索这个配置类。)

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

3、分析这个场景

分析这个场景给我们导入了哪些能用的组件,自动装配这些组件进行后续使用,不满意自动配置好的默认组件,则可以进行定制化处理,步骤如下:

​ 1、更改配置(可以在application.properties中进行配置)

​ 2、自定义组件

在这里插入图片描述

4、业务代码开发

通过注解以及java语法完成功能组件的开发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值