Spring篇:IOC容器的加载过程

上篇文章对spring做了个初步认识,本篇文章对于IOC容器的加载过程,是从一个整体角度出发,比较宏观的介绍整个加载流程,细节方面待下节再讲。先看过程图
IOC容器的加载过程图
ioc容器加载过程图
图片可能有点不清晰,没关系,有这么个画面就好,其实IOC容器整个加载过程大致分为两部分:
第一部分是将我们的类注册至bean定义容器中,第二部分bean工厂拿到bean定义容器中的类根据bean定义进行生产。
整个过程呢,跟我们装修房子差不多。比方说,装修房子吧,第一步,装修公司需要做好一些准备工作,第二步,派销售人员去扫楼,寻找客户,找到意向客户之后,第三步,安排设计师进行设计图纸,第四步,由专业的装修团队根据图纸进行装修房子。
脑海里有了这个流程,好,那我们开始真正分析了:
加载ioc容器的方式有很多种,如xml、注解、配置类等,我们就以注解方式为例(注解方式要比xml方式好):
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ConfigTest.class);
这样就创建了一个ApplicationContext的spring容器。那我们的IOC容器到底是怎么去加载这个配置类的呢?
第一步,做好准备工作:
实例化一个bean工厂,然后初始化bean定义读取器,并且在我们容器中注册了一些必需的处理器。
第二步,寻找客户
注册我们的配置类。
第三步,设计图纸
调用bean工厂后置处理器(invokeBeanFactoryPostProcessors),读取配置类、进行扫描、解析、注册为bean定义(提供扩展点操作bean定义beanPostProcessor),放入bean定义容器中。
第四步:装修
bean工厂根据bean定义生产bean。

接下来,咱们说说装修过程,即bean的生命周期
1.实例化;
2.填充属性;
3.如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBeanName()方法;
4.如果bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方 法,将BeanFactory容器实例传入;
5.如果bean实现了ApplicationContextAware接口,Spring将调用 setApplicationContext()方法,将bean所在的应用上下文的引用传入进来;
6.如果bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()方法;
7.如果bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet()方法,如果bean使用initmethod声明了初始化方法, 该方法也会被调用;
8.如果bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessAfterInitialization()方法;
到这一步,bean已经生产好了,它们将一直驻留在应用上 下文中,直到该应用上下文被销毁;
9.如果bean实现了DisposableBean接口,Spring将调用它的destroy()接口方法。同样,如果bean使用destroy-method声明了销毁方法,该方法也会被调用。
好了,ioc容器的加载过程分析到此就告一段落了,下节我们将进入源码层面,进行微观分析。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值