Springboot 自动化装配的原理

Springboot 自动化装配的原理

SpringBoot 主要作用为:起步依赖、自动装配。而为了实现这种功能,SpringBoot 底层主要使用了 @SpringBootApplication 注解。

首先,@SpringBootApplication 是一个复合注解 ,它结合了 @Configuration@EnableAutoConfiguration@ComponentScan 三个注解的功能。这个注解通常被用在主启动类上,用于开启 SpringBoot 的自动配置和组件扫描。

  1. @Configuration:表示 @SpringBootApplication 即为引导类同样也为配置类;
  2. @ComponentScan:让 SpringBoot 自动扫描当前包及其子包中的 @Component@Repository@Service@Controller 等能识别的注解的类,并将它们注册为 Bean。
  3. @EnableAutoConfiguration:自动装配的核心注解,底层是一个 @Import 注解,会导入一个 AutoConfigurationImportSelector 这个配置类,会自动执行 selectImports 方法,最终会去调用 SpringFactoriesLoader.loadFactoryNames 方法,去扫描 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件中所有信息,加载进内存封装成一个数组,最后会根据各种条件(起步依赖、@Conditional 相关注解)进行过滤,找到匹配条件的全类名,并封装成字符串数组到内存中。再调用 run 方法时,通过反射创建对象并交给 Spring 容器管理。
相关推荐
夜晚回家7 分钟前
「Java基本语法」代码格式与注释规范
java·开发语言
斯普信云原生组18 分钟前
Docker构建自定义的镜像
java·spring cloud·docker
wangjinjin18022 分钟前
使用 IntelliJ IDEA 安装通义灵码(TONGYI Lingma)插件,进行后端 Java Spring Boot 项目的用户用例生成及常见问题处理
java·spring boot·intellij-idea
wtg445222 分钟前
使用 Rest-Assured 和 TestNG 进行购物车功能的 API 自动化测试
java
白宇横流学长1 小时前
基于SpringBoot实现的大创管理系统设计与实现【源码+文档】
java·spring boot·后端
fat house cat_1 小时前
【redis】线程IO模型
java·redis
stein_java2 小时前
springMVC-10验证及国际化
java·spring
weixin_478689762 小时前
C++ 对 C 的兼容性
java·c语言·c++
LUCIAZZZ3 小时前
HikariCP数据库连接池原理解析
java·jvm·数据库·spring·springboot·线程池·连接池
考虑考虑3 小时前
Springboot3.5.x结构化日志新属性
spring boot·后端·spring