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

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


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

进入这个核心注解

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

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

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


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


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

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

继续点击进入这个类:

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

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

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

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

相关推荐
老华带你飞20 小时前
健身房预约|基于springboot 健身房预约小程序系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
paopaokaka_luck20 小时前
基于SpringBoot+Uniapp的自习室预约小程序(腾讯地图API、Echarts图形化分析、二维码识别)
vue.js·spring boot·后端·spring·echarts
q_191328469520 小时前
基于SpringBoot2+Vue2的装修报价网站
java·vue.js·spring boot·mysql·计算机毕业设计·演示文稿
qq_124987075320 小时前
基于Spring Boot的社区医院管理系统的设计与实现(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·毕业设计
阿拉斯攀登20 小时前
MyBatis-Plus 全面介绍 & Spring Boot 集成实战
java·spring boot·mybatisplus·mp
ss27321 小时前
springboot二手车交易系统
java·spring boot·后端
小小8程序员21 小时前
Spring Boot AOP 全面解析(原理 + 实战 + 场景)
java·spring boot·spring
学网安的肆伍21 小时前
【038-安全开发篇】JavaEE应用&SpringBoot框架&MyBatis注入&Thymeleaf模版注入
spring boot·安全·java-ee
何中应21 小时前
【面试题-8】Spring/Spring MVC/Spring Boot/Spring Cloud
java·spring boot·后端·spring·mvc·面试题
真上帝的左手21 小时前
15. 实时数据-SpringBoot集成WebSocket
spring boot·后端·websocket