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

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


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

进入这个核心注解

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

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

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


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


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

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

继续点击进入这个类:

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

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

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

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

相关推荐
huaweichenai2 小时前
spring boot 实现file文件上传
java·spring boot·后端
VX_bysjlw9852 小时前
数码设备销售网站设计与实现39138-计算机毕设原创(免费领源码+带部署教程)
java·vue.js·spring boot·mysql·tomcat·mybatis·idea
桃西西呀2 小时前
Spring AI Alibaba 之七:我没写一行 tracing 埋点,Agent 每一步却被 Micrometer 看得清清楚楚
人工智能·spring·llm
桃西西呀2 小时前
Spring AI Alibaba 之八:我让 Agent 直接执行 shell 命令,它却读到了目录里的密钥,沙箱到底防住了什么
人工智能·spring·llm
code_slave(码畜)2 小时前
微服务架构落地:消息队列架构设计(下篇)——消息堆积、死信治理与集群监控告警实战
spring boot·spring cloud·微服务·云原生·中间件·架构
~光~~4 小时前
【嵌入式linux学习】Cache 策略:Write-Through / Write-Back + Allocation
linux·学习·spring
霸道流氓气质4 小时前
OpenTelemetry 入门与实战:Java Agent、Spring Boot Starter与LLM调用追踪示例
java·开发语言·spring boot
m0_587383004 小时前
24 小时自助健身房系统软件开发实战指南与案例解析
java·spring boot·spring·系统架构·需求分析
爱编程的小白L5 小时前
基于SpringBoot+Vue的医院门诊排队叫号系统的设计与实现
spring boot