Java_Spring:03.bean的生命周期

bean的初始化过程

 Spring Bean的生命周期

.通过XML、Java annotation(注解)以及Java Configuration(配置类)等方式加载Spring              Bean

.BeanDefinitionReader:解析Bean的定义。在Spring容器启动过程中,会将Bean解析成Spring       内部的BeanDefinition结构;理解为:将spring.xml中的<bean>标签转换成BeanDefinition结构,     有点类似于XML解析

三. BeanDefinition:包含了很多属性和方法。例如:id、class(类名)、scope、ref(依赖的              bean)等等。其实就是将bean(例如<bean>)的定义信息存储到这个对应BeanDefinition相应      的属性中

例如:<bean id="" class="" scope=""> -----> BeanDefinition(id/class/scope)

四.BeanFactoryPostProcessor:是Spring容器功能的扩展接口。

注意:

1)BeanFactoryPostProcessor在spring容器加载完BeanDefinition之后,在bean实例化之前执行          的

2)对bean元数据(BeanDefinition)进行加工处理,也就是BeanDefinition属性填充、修改等操作

五.BeanFactory:bean工厂。它按照我们的要求生产我们需要的各种各样的bean。

例如:

1.BeanFactory -> List<BeanDefinition>

2.BeanDefinition(id/class/scope/init-method)

3.<bean class="com.zking.spring02.biz.BookBizImpl"/>

4.foreach(BeanDefinition bean : List<BeanDefinition>){

   //根据class属性反射机制实例化对象

   //反射赋值设置属性

   }

六.Aware感知接口:在实际开发中,经常需要用到Spring容器本身的功能资源

    例如:BeanNameAware、ApplicationContextAware等等

    BeanDefinition 实现了 BeanNameAware、ApplicationContextAware

.BeanPostProcessor:后置处理器。在Bean对象实例化和引入注入完毕后,在显示调用初始化       方法的前后添加自定义的逻辑。(类似于AOP的绕环通知)

     前提条件:如果检测到Bean对象实现了BeanPostProcessor后置处理器才会执行

     Before和After方法

    1)Before

    2)调用初始化Bean(InitializingBean和init-method,Bean的初始化才算完成)

    3)After

    完成了Bean的创建工作

八.destory:销毁

Bean的单例与多例模式

一.单例

优点:减少内存的使用,也是Spring中bean默认的创建模式

缺点:会存在变量污染的问题

二.多例

优点:不存在变量污染

缺点:耗内存

三.单例与多例选择

是否会对bean对象中的属性进行修改

:多例

不会:单例

总结

单例的生命周期:容器生,对象生

多例的生命周期:bean在使用的时候才进行初始化,销毁与容器无关,与Java的垃圾回收机制有                               关

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值