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

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


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

进入这个核心注解

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

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

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


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


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

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

继续点击进入这个类:

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

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

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

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

相关推荐
小小鸭程序员22 分钟前
Spring Boot事务管理详解(附银行转账案例)
java·spring boot·spring·github·intellij-idea
阿绵1 小时前
拦截器和过滤器详解
java·spring·过滤器·拦截器
无眠_1 小时前
【Spring Boot 与 Spring Cloud 深度 Mape 之五】微服务守门神:Spring Cloud Gateway 核心详解与实战
spring boot·spring cloud·微服务
计算机-秋大田3 小时前
基于Spring Boot的戒烟网站的设计与实现(LW+源码+讲解)
java·vue.js·spring boot·后端·课程设计
小马爱打代码3 小时前
SpringBoot 7 种实现 HTTP 调用的方式
spring boot·后端·http
小小鸭程序员3 小时前
如何将Spring Boot项目与DeepSeek AI集成并优化为AI系统
java·人工智能·spring boot·spring·docker
油丶酸萝卜别吃3 小时前
springBoot与ElementUI配合上传文件
spring boot·后端·elementui
程序猿教你打篮球4 小时前
【SpringCloud】Eureka的使用
spring·spring cloud·eureka
风象南4 小时前
Spring Boot 实现密码安全存储的5种方式
java·spring boot·后端
梅羽落5 小时前
Spring笔记03-依赖注入
java·开发语言·经验分享·spring