spring 组件扫描,springboot 扫描
目录
一、前期准备1.1 创建工程1.2 创建控制器二、探究过程2.1 探究目标2.2 探究过程2.2.1 回顾容器豆的创建与刷新春季应用2。2 .3 servletwebserverapplicationcontext 2。2 .4 abstractapplicationcontext 2。2 .5后处理注册委托2。2 .6配置类后处理器2。2 .7 configurationclassparser 2。2 .8 componentscanannationparser 2。3结论参考视频:https://www.bilibili.com/video/BV1Bq4y1Q7GZ?p=6
通过视频的学习和自身的理解整理出的笔记。
一、前期准备
1.1 创建工程
创建跳羚项目,跳靴版本为2.5.0,引入弹簧靴起动器网依赖,pom文件如下:
?可扩展标记语言版本=1.0 编码=UTF八号?项目xmlns= http://maven。阿帕奇。org/POM/4。0 .0 xmlns : xsi= http://www。w3。org/2001/XML schema-instance xsi :架构位置= http://maven。阿帕奇。org/POM/4。0 .0 https://maven.apache.org/xsd/maven-4.0.0.xsd模型版本4 .0 .0/模型版本父groupIdorg.springframework.boot/groupId artifactId spring-boot-starter-parent/artifactId版本2.5-从存储库查找父级-/父级groupIdcom.example/groupId artifact id弹簧靴/artifactId版本0。0 .1-快照/版本名称弹簧靴/名称描述跳羚的演示项目/描述属性Java。版本1.8/Java。版本/属性依赖项groupIdorg.springframework.boot/groupId artifact id spring-boot-starter/artifact id/dependency groupIdorg.springframework.boot/groupId artifact id spring-boot-starter-starter-web/artifact id/dependency依赖项groupIdorg.springframework.boot/groupId artifact id spring-boot-starter-test/artifact id范围测试/范围/范围/依赖项构建plu
gins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
1.2 创建Controller
创建一个简单的Controller用于测试
@RestControllerpublic class HelloController { public void helloController() { System.out.println("创建了"); } @RequestMapping("hello") public String hello() { return "hello"; }}
二、探究过程
2.1 探究目标
在项目中我们创建了Controller,这个Controller是如何被spring自动加载的呢?为什么Controller必须放在启动类的同级目录下呢?
如果我们想要加载不在启动类同级目录下的bean对象,需要在启动类中使用@ComponentScan
注解。
目标:SpringBoot项目中我们没有设置组件扫描的包,为什么它会默认扫描启动类目录下所有的包。
2.2 探究过程
2.2.1 回顾容器bean的创建与刷新
在SpringApplication的run()
方法中,创建了spring容器context,并通过refreshContext(context)
更新容器加载我们自定义的bean对象。
我们发现在执行完refreshContext(context)
代码后,自定义的bean对象(HelloController)就已经被创建了,说明refreshContext(context)
过程中创建了自定义bean对象。
下面我们看看究竟是refreshContext(context)
中哪些方法创建了自定义bean对象。
2.2.2 SpringApplication
我接着看refreshContext(context)
方法
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。