Spring中Bean的生命周期?

Spring中Bean的生命周期?

1、生命周期图

在这里插入图片描述

2、参考回答

  1. Spring中Bean的生命周期主要包含四个阶段:实例化Bean---->Bean属性填充---->初始化Bean---->销毁Bean。
  2. 首先是实例化Bean,当客户向容器请求一个未初始化的Bean时,或者初始化Bean需要注入另外一个未初始化的Bean时,容器就会调用doCreatBean()方法进行实例化。实际就是通过反射的机制创建一个Bean对象。
  3. Bean完成实例化后,接着就是给这个Bean对象进行属性的填充。也就是注入这个Bean对象其他依赖的Bean。
  4. 属性填充完之后,进行初始化Bean,初始化Bean可以分为几个步骤:
    a.执行aware接口的方法,Spring会根据对象是否实现了xxxArare接口,通过Arare类型的接口,我们可以获取一些spring容器的资源。如实现了BeanNameAware接口可以获取BeanName,BeanFactoryAware接口可以获取工厂对象BeanFactory。
    b.执行BeanPsotProcessor的前置处理方法,PostProcessorBeforeInitialztion,对Bean进行一些自定义的前置处理。
    c.判断Bean是否实现了InitialztionBean接口,如果实现了就会执行InitiallzingBean的AfterProportiesSet()初始化方法。
    d.执行用户自定义的方法。如Init-method方法
    e.执行BeanPostProcessorer的后置处理方法PostProcessorAfterInitalization方法
  5. 初始化后,就可以使用Bean了,当Bean不需要时进行销毁。
    a.首先判断Bean是否实现了DestructionAwareBeanPostProcessor接口,如果实现了就会执行DestructionAwareBeanPostProcessor后置处理器的销毁回调方法。
    b.其次Bean会判断是否实现DisposableBean接口如果调用则会执行对应的destroy方法。
    c.最后判断这个Bean是否配置了自定义的destroy-method方法,如果配置了,则会自动调用该方法。

Spring中BeanFactory和ApplicayionContext的联系和区别?

BeanFoctory是spring中比较原始的Factory,无法支持插件,资源访问,web应用,AOP等功能。
而ApplicationContext接口是通过BeanFactory派生而来的,除了拥有AppllicationContext的功能外还支持其他扩展功能。(资源访问、国际化消息访问、事件传播)
区别:
ApplicationContext默认是使用Singleton(单例)的,无论是否使用都会进行实例化。优点是:预加载;缺点是:浪费资源。
BeanFactory配置bean只有在加载的时候才会对bean进行实例化。优点:节约内存。缺点是:速度慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值