每天学一点spring(三)

5 篇文章 0 订阅

首先总结一下前面的知识,先介绍了一下spring的体系,又讲了一下自己对IOC的理解。今天开始,深入源码理解一下IOC的执行过程。

整体流程:

  1. 实例化容器:AnnotationConfigApplicationContext
  2. 实例化工厂:DefaultListableBeanFactory
  3. 实例化BeanDefinition 读取器:BeanDefinitionReader
  4. 创建BeanDefinition扫描器:BeanDefinitionScanner
  5. 注册配置类为一个BeanDefinition   register(componentClasses)
  6. refresh()
  7. invokeBeanFactoryPostProcessors(beanFactory)
  8. finishBeanFactoryInitialization(beanFactory);
 
今天来看第一个实例化容器
 
 
可以看到它继承了ApplicationContext核心类。来看一下它的构造方法
 
 
	public AnnotationConfigApplicationContext() {
		
		this.reader = new AnnotatedBeanDefinitionReader(this);
	
		this.scanner = new ClassPathBeanDefinitionScanner(this);
	}

默认构造方法会实例化一个reader读取器和scanner扫描器。

  •  由于继承GenericApplicationContext类,会先初始化一个beanFactory = new DefaultListableBeanFactory()
  • 完成了spring内部BeanDefinition的注册(主要是后置处理器)

  • 扫描包名的时候会用到

public AnnotationConfigApplicationContext(Class<?>... componentClasses) {
		
		this();

		
		register(componentClasses);

		refresh();
	}
  • 这是一个有参构造方法可以接受多个配置类
  • this()完成默认构造方法的事
  • refresh()注册传入的类,带@Configuration的配置类称之为传统配置类,不带的为普通bean

  • 刷新方法以后介绍

总结: AnnotationConfigApplicationContext的实例化调用父类生成默认bean 工厂,创建了一个读取器和扫描器。
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值