springboot自动配置原理1--自动包规则原理

前言:最近在写springboot项目的时候感觉有点不对,不对在哪呢?springboot默认包扫描的规则是启动类所在包下面及其子包下面。源码当中是如何实现的呢?


首先 我们找到启动类的核心注解 @SpringBootApplication

进入这个核心注解

与自动配置相关的有这三个注解。

首先就是@SpringBootConfiguration,这个注解点击进去,我们发现,它其实描述的就是当前注解修饰的类是配置类:

也就是说我们springboot启动类就是一个配置类


然后我们再看 @ComponentScan这个就是开启包扫描,这个不做详解。


最后我们看看 @EnableAutoConfiguration 注解。我们点击进去看看

我们发现 @EnableAutoConfiguration 注解又包含两个字注解:分别是 @AutoConfiguratonPackage 注解和 @Import 注解。 我们先看 @AutoConfiguratonPackage 注解。我们点击进去:

继续点击进入这个类:

这个方法就是利用Registrar给容器中导入一系列组件,那到底怎么注册的 呢,我们可以打一个断点:

通过打断点发现:它就是把这个注解所在包下面的所有组件导入到容器 中。 那包名到底是什么呢?我们可以看一下

我们发现:导入容器当中的包名就是启动器所在的的包。

这就解释了我们之前在搭建springboot工程的时候,要求所有组件必须定义在启动类包下面了,只有这样才能被扫描的到!!!

相关推荐
YOU OU14 分钟前
Spring IoC&DI
java·数据库·spring
小江的记录本3 小时前
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
云烟成雨TD4 小时前
Spring AI Alibaba 1.x 系列【58】Spring AI Alibaba Builtin Nodes 模块介绍
java·人工智能·spring
小江的记录本4 小时前
【Java基础】反射与注解:核心原理、自定义注解、注解解析方式(附《思维导图》+《面试高频考点清单》)
java·数据结构·python·mysql·spring·面试·maven
jameslogo4 小时前
如何用RocketMQTemplate发送事务消息
java·spring boot·rocketmq
smileNicky4 小时前
Spring框架懒加载怎么实现?
python·spring·rpc
无关86885 小时前
Spring Boot 项目标准化部署打包实战
java·spring boot·后端
yychen_java5 小时前
IDEA × Qoder:告别“手写Spring”,进入AI协作开发新时代
人工智能·spring·intellij-idea
jay神6 小时前
基于微信小程序课外创新实践学分认定系统
java·spring boot·小程序·vue·毕业设计
未若君雅裁6 小时前
Spring Bean 作用域、线程安全与生命周期
java·安全·spring