
网站救助计划
1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本
2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助,网站倒闭后可联系站长领取本站pdf内容
3.若网站能存活下来,后续将会持续更新内容
Beand的生命周期比较长,并且不是很容易记住,如下图

具体步骤如下:
- 首先通过
getBean()
方法向容器请求一个Bean - 如果容器注册了InstantiationAwareBeanPostProcessor接口,则在实例化Bean前调用接口的
postProcessBeforeInstantiation()
方法 - 根据配置情况调用Bean构造函数或工厂方法实例化Bean
- 如果容器注册了InstantiationAwareBeanPostProcessor接口,在实例化Bean之后,调用接口的
postProcessAfterInstantiation()
方法 - 如果Bean配置了属性信息,容器会将配置值设置到Bean对应的属性中,不过在设置每个属性前将先调用InstantiationAwareBeanPostProcessor接口的
postProcessPropertyValues()
方法 - 调用Bean的属性设置方法设置属性值
- 如果Bean实现了BeanNameAware接口,则将调用
setBeanName()
方法,将配置文件中的该Bean对应的名称设置到Bean中 - 如果Bean实现了BeanFactoryAware接口,则将调用
setBeanFactory()
方法,将BeanFactory容器实例设置到Bean中 - 如果BeanFactory装配了BeanPostProcessor后处理器,则将调用BeanPostProcessor的
postProcessBeforeInstantiation(Object bean, String beanName)
方法对Bean进行加工操作。其中,参数Object bean是指当前正在处理的Bean,而beanName是当前Bean的配置名,返回对象为加工处理后的Bean - 如果Bean实现了InitializingBean接口,则将调用接口的
afterPropertiesSet()
方法 - 如果在Bean中通过init-method属性定义了初始方法,则将执行这个方法
- BeanPostProcessor后处理器定义了两个方法,其中一个在第8步中调用过了,这里调用
postProcessAfterinitialization(Object bean, String beanName)
方法再次对Bean进行加工处理 - 如果没有指定Bean的范围,则Bean的默认范围为单例,将Bean放入Spring IoC容器的缓存池中,并将Bean返回给调用者
- 如果Bean实现了DisposableBean接口,则将调用接口的
destory()
方法 - 如果通过<bean>的destory-method属性指定了Bean的销毁方法,那么将执行这个方法完成对Bean资源的释放
本站链接:https://www.mianshi.online,如需勘误或投稿,请联系微信:lurenzhang888
点击面试手册,获取本站面试手册PDF完整版