当前位置: 首页 > article >正文

springboot核心原理之@SpringbootApplication

1.@SpringbootApplication

@Configuration标志的类 在spring ioc启动的时候就会加载创建这个类对象

@EnableAutoConfiguration 中有两个注解

(1)@AutoConfigurationPackage 扫描主程序包(主程序main所在包及其子包)
可以看到这个类 :
static class Registrar implements ImportBeanDefinitionRegistrar, DeterminableImports {
这个类是注册组件的

	 public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
        AutoConfigurationPackages.register(registry, (String[])(new PackageImports(metadata)).getPackageNames().toArray(new String[0]));
    }
		AnnotationMetadata 启动类的一些元信息
		debug打这个断点的时候  执行	new PackageImports(metadata)).getPackageNames() 可以得到主程序所在包的包名
	这个注解两个作用:
	利用@import给容器导入组件和把主程序所在的包的所有组件导入进来		

( 2 )	@Import({AutoConfigurationImportSelector.class}) 向容器中注入类

在这里插入图片描述

加载自动配置类
在这里插入图片描述

扫描spi文件
在这里插入图片描述
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}

组件扫描 排除一些组件
(1)这个类实现在这里插入图片描述
(2)排除已经扫描进来的配置类和自动配置类

在这里插入图片描述

重新启动看执行顺序 先@ComponentScan( 再@EnableAutoConfiguration 最后 @SpringBootConfiguration

run中看 停留在refreshcontext(context)

springboot生命周期:
在这里插入图片描述
自动配置在初始化组件创建中 stated 中refresh是在调用spring 最外层就是启动ioc容器 ioc容器造工厂 工厂造组件
准备工厂可以理解为放车间 放流水线
finishBeaFactoryInitialzation 开始造扫描出的组件 调用无参构造器 或者有参构造器创建
这些组件会被创建
@Configuration
@Componet
@Bean
@Service
。。。


http://www.kler.cn/a/146417.html

相关文章:

  • nginx 配置域名前缀访问 react 项目
  • SpringSecurity详解
  • 《探索烟雾目标检测开源项目:技术与应用的深度剖析》
  • 【Git版本控制器--1】Git的基本操作--本地仓库
  • Chapter1:初见C#
  • 深入理解计算机系统阅读笔记-第十二章
  • CRC校验
  • QT(19):QChar和QByteArray
  • python循环语句和函数
  • 【虹科干货】ntopng如何将漏洞扫描与流量监控相结合,以提高网络安全性
  • OpenCV简介及安装
  • 利用 LD_PRELOAD 环境变量
  • c++版本opencv计算灰度图像的轮廓点
  • 计网Lesson1笔记
  • 测试用例评审检查点
  • 2.19 keil里面工具EventCorder使用方法
  • DTC品牌出海必知的8大营销策略,塑造高忠诚度品牌形象!
  • SpringCloudAlibaba微服务 【实用篇】| Nacos注册中心
  • Go 内置运算符
  • HarmonyOS应用开发者高级认证(题库)
  • 日本运营商启动先进边缘云技术研发
  • vite搭建vue2项目
  • 使用脚手架创建Vue3项目
  • rocky8.9配置K8S集群kubernetes,centos同理
  • 力扣:182. 查找重复的电子邮箱(Python3)
  • 2023最全的自动化测试入门基础知识(超详细~)