Spring03(bean的生命周期)

目录

1.bean的初始化过程

 2.Bean的单例与多例模式


1.bean的初始化过程

图解

 

Spring Bean的生命周期:

1)通过XML、Java annotation(注解)以及Java Configuration(配置类)

等方式加载Spring Bean

2)BeanDefinitionReader:解析Bean的定义。在Spring容器启动过程中,

会将Bean解析成Spring内部的BeanDefinition结构;

理解为:将spring.xml中的<bean>标签转换成BeanDefinition结构

有点类似于XML解析

3)BeanDefinition:包含了很多属性和方法。例如:id、class(类名)、

scope、ref(依赖的bean)等等。其实就是将bean(例如<bean>)的定义信息

存储到这个对应BeanDefinition相应的属性中

例如:

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

4)BeanFactoryPostProcessor:是Spring容器功能的扩展接口。

注意:

1)BeanFactoryPostProcessor在spring容器加载完BeanDefinition之后,

在bean实例化之前执行的

2)对bean元数据(BeanDefinition)进行加工处理,也就是BeanDefinition

属性填充、修改等操作

 

 

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

例如:

BeanFactory -> List<BeanDefinition>

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

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

foreach(BeanDefinition bean : List<BeanDefinition>){

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

   //反射赋值设置属性

}

 

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

例如:BeanNameAware、ApplicationContextAware等等

BeanDefinition 实现了 BeanNameAware、ApplicationContextAware

 

7)BeanPostProcessor:后置处理器。在Bean对象实例化和引入注入完毕后,

在显示调用初始化方法的前后添加自定义的逻辑。(类似于AOP的绕环通知)

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

Before和After方法

BeanPostProcessor

1)Before

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

3)After

完成了Bean的创建工作

8)destory:销毁

总结:

1.通过三种方式(配置文件,注解,配置类)将bean标签转成BeanDefinition

2.通过BeanFactoryPostProcessor可以在初始化之前修改属性

3.BeanFactory进行bean实例化,就是生产javabean

4.Aware感知接口,能够在拿到Spring上下文内部的资源对象

5.BeanPostProcessor后置处理器,相当于环绕通知
 

 2.Bean的单例与多例模式

单例模式:指的是一个对象在项目中可以只创建一次

多例模式:一个对象在项目中多次创建

实例

  不同的地址:

 单例模式的优缺点:减少内存,但是容易污染变量

优点 :减少内存

 缺点: 容易污染变量

 单例不适用的地方是,对象如果有默认值就容易污染变量,此时多例比较适合选择: 

  运行结果:

 

 单例模式下的javabean的生命周期:容器生对象生,容器死对象死

 多例模式下的javabean的生命周期:使用时对象生,死亡跟着jvm垃圾回收机制走。

bean的初始化时间点除了与bean的管理模式(单例/多例)有关,还跟beanFActory的子类有关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值