spring bean的生命周期详解

此图片想要高清的可以通过此链接下载—>空白,在我上传的资源里能找到
在这里插入图片描述

spring主要是负责管理对象的。

所有的bean都是对象,但是并不是所有的对象都是bean;
1.spring管理对象的本质机制

1.因为Spring要管理的是bean对象
2.所以把要管理的对象变成bean对象。
3.因此我们在使用的时候,就从spring中获取我们需要使用的bean对象

2.bean的生命周期
狭义的bean的生命周期

1.spring创建一个对象(new Service())

2.填充user属性,通过的是反射的方式,私有化不会对填充产生影响

3.Aware
判断对象是否实现了BeanNameAware接口,如果实现了,就会调用 对象.setBeanName(“userService”)大概来说就是回调判断了数据类型。

4.在接口 InitializingBean 中有一个初始化方法 afterPropretiesSet(),可以在set方法之后再次进行赋值,这个是自己定义的。

5.这时候就可以称为一个bean对象的

6.默认会放到单例池。(单例是一级缓存)

广义的bean的生命周期

1.class 在创建对象之前一定会有class

2.spring并不是直接通过class直接创建bean对象的,其中有一个BeanDefintion(bean的定义),

BeanDefintion中有很多属性
在这里插入图片描述

3.根据扫描到的class生成BeanDefintion对象,去赋值。在BeanDefintion中有有两条属性scope和beanClass,spring在创建bean对象的时候是基于beanClass创建的,并不是原先的class,和原先的class没有直接关系

4.BeanFactory 和 BeanFactoryPostProcessor

什么是BeanFactory(bean工厂) ?
	创建bean
	获取bean
什么是BeanFactoryPostProcessor(bean工厂的后置处理器)?
	就是在bean工厂组建完成之后,再进行工作
	
	bean工厂组建完成,并不是创建完成bean,而是把BeanDefintion都完成放进BeanDefintionMap中去了,
	通俗理解就是原材料准备好了。
	
	在BeanFactoryPostProcessor中可以对原材料进行加工。意思就是可以再次对BeanDefintion进行处理。之后再通过BeanDefintion
	生成bean对象。

bean的注册和创建有什么不同
	bean的注册不会通过bean的生命周期,直接把对象放入单例池

当前过程再加上狭义的bean的生命周期,就是广义的bean的生命周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值