前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Spring Boot自动配置

Spring Boot自动配置

原创
作者头像
doomer
修改2025-02-15 10:42:42
修改2025-02-15 10:42:42
790
举报

Spring Boot自动配置

Spring和Spring Boot的关系

什么是Spring
spring-overview
spring-overview
  1. spring是一个用于构建java ee应用的开源框架
  2. spring的核心是IoCAOP
什么是IoC

IoC即控制反转, 是一种设计思想, 他将java bean的生命周期交给容器管理, DIIoC的实现

  • [] 新写一篇博客阐述
什么是AOP
  • [] 新写一篇博客这种方式的缺点是什么

配置文件和依赖过多 ,开发者的精力被消耗在依赖管理和配置文件的维护, 降低了开发效率

什么是Spring Boot

Spring Boot是Spring的深度封装, 底层依然是Spring,他提供了Spring项目的起步依赖和自动配置, 让开发者将精力从繁琐的配置文件和依赖管理中抽离, 专注于项目的开发

Spring Boot是如何实现自动配置的
查看sprig boot源码

首先我们查看spring boot的启动类

spring boot的启动类
spring boot的启动类

启动类上有一注解SpringBootApplication, 表明该类是一个启动, 我们点进该注解可以发现

SpringBootApplication
SpringBootApplication

该注解是一系列元注解和SpringBootConfiguration, EnableAutoConfiguration, ComponentScan的组合注解

其中SpringBootConfiguration的作用与Configuration的作用相同都是表明该类是一个配置类, ComponentScan表明会扫描启动所在包及其子孙包的所有组件, 我们重点关注EnableAutoConfiguration 注解

进入EnableAutoConfiguration可以看到

EnableAutoConfiguration
EnableAutoConfiguration

该类导入一个AutoCingurationImportSelector.class文件, 该类会自动调用selectImports(AnnotationMetadata annotationMetadata)方法,, 该方法就判断是否启用自动配置, 如果启用了自动配置, 则会调用AutoConfigurationEntry getAutoConfigurationEntry(AnnotationMetadata annotationMetadata)方法, 该方法会调用getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes)方法, 该方法会读取

META-INF/spring/下的 org.springframework.boot.autoconfigure.AutoConfiguration.imports文件, 该文件中保存了需要自动配置的配置类的信息, spring回家这些配置类加载进内存

调用顺序:

调用顺序
调用顺序

org.springframework.boot.autoconfigure.AutoConfiguration.imports文件部分信息如下:

org.springframework.boot.autoconfigure.AutoConfiguration.imports
org.springframework.boot.autoconfigure.AutoConfiguration.imports

注意如果spring boot是2.7.0之前的spring版本, 文件位置应是META-INF目录下的spring.factoires文件

spring.factoires
spring.factoires

目录如下所示:

目录位置
目录位置

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring Boot自动配置
    • Spring和Spring Boot的关系
      • 什么是Spring
    • 什么是Spring Boot
      • Spring Boot是如何实现自动配置的
      • 查看sprig boot源码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档