spring 组件扫描,springboot 扫描

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: