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

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.lryc.cn/news/250811.html

相关文章:

  • 阻抗匹配电阻原理及其应用
  • IDEA2023安装教程(超详细)
  • 【MySql】悲观锁和乐观锁的介绍
  • 手写实现一个动态代理框架
  • Leetcode226. 翻转二叉树
  • 使用WalletConnect Web3Modal v3 链接钱包基础教程
  • 黄金比例设计软件Goldie App mac中文版介绍
  • el-select实现可复制一段“关键词“(多个)实现搜索 以及 回车选中搜索项
  • C++解析xml示例
  • 记录 | linux find+rm查找并直接删除
  • 24.有哪些生命周期回调方法?有哪几种实现方式?
  • C++详解
  • mybatis数据输入-实体类型的参数
  • Java-接口
  • mysql常用命令行代码
  • Python压缩、解压文件
  • 面试就是这么简单,offer拿到手软(一)—— 常见非技术问题回答思路
  • 134. 加油站(贪心算法)
  • Springboot3+vue3从0到1开发实战项目(二)
  • Spring中Bean的生命周期
  • IndexOutOfBoundsException: Index: 2048, Size: 2048] Controller接收对象集合长度超过2048错误
  • 2023年中国消费金融行业研究报告
  • 深度学习:什么是知识蒸馏(Knowledge Distillation)
  • 【Go】protobuf介绍及安装
  • c语言编程题经典100例——(41~45例)
  • 计算机毕业设计|基于SpringBoot+MyBatis框架健身房管理系统的设计与实现
  • java学习part27线程死锁
  • (二)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • 区间预测 | Matlab实现BP-KDE的BP神经网络结合核密度估计多变量时序区间预测
  • LD_PRELOAD劫持、ngixn临时文件、无需临时文件rce