写点什么

Spring- 技术专题 -Bean 的生命周期简介

发布于: 2020 年 08 月 20 日
Spring-技术专题-Bean的生命周期简介

Spring的生命周期从宏观的角度去看,它的生命周期可以分为4个阶段:实例化、属性赋值、初始化、销毁,细化Bean的生命周期为:

  1. 实例化 :通过反射进行构建相关的实例对象以及生命周期的开启阶段,进行相关的内存分配。

  2. 设置属性值(依赖注入Setter):设置相关的对象的基本属性和相关的信息方法调用。

  3. 如果Bean实现了BeanNameAware接口则会去调用它的setBeanName(String beanId),传递Spring配置中Bean的ID.

  4. 如果Bean实现了BeanFactoryAware接口,则会去调用它的setBeanFactory()方法,传递工厂本身

  5. 如果Bean实现了ApplicationContextAware,调用setApplicationContext(ApplicationContext)方法。

  6. 如果Bean实现了BeanPostProcessor接口,调用方法postProcessBeforeInitialization(Object obj, String s),这是一个容器级生命周期接口方法,它独立于Bean,以容器附加装置的形式注册到Spring容器中,当Spring容器创建Bean的时候,这中“后处理器”都会发生作用,影响性是全局的。

  7. 如果Bean实现了InitializingBean接口,则调用它所实现的afterPropertiesSet()方法

  8. 调用通过init-method属性配置的初始化方法

  9. 如果关联了BeanPostProcessor接口,将会调用postAfterInitialization(Object obj, String s)方法

  10. 当Bean不再使用的时候,会进行销毁。如果Bean实现了DisposableBean,则调用它所实现的afterPropertiesSet()方法。

  11. 调用通过destroy-method属性配置的销毁方法.


Spring框架的核心功能是控制反转IOC,面向切面AOP和声明式事务等功能,这些功能都依赖于IOC实现的基础上。IOC:就是通过容器来控制业务对象之间的依赖关系,这就是"控制反转"的含义,控制权由应用代码转到了外部容器,控制权发生了转移,这样一来,既可降低代码模块间的耦合度。

为实现IOC功能,Spring提供了两个访问接口:BeanFactoryApplicationContext

BeanFactory:Bean工厂,借助于配置文件可以实现对JavaBean的配置和管理,用于向使用者提供Bean的实例。

完成容器管理对象的实例化,并根据预定的配置完成对象之间的依赖关系的组装,最终向使用者提供已完成装配的可用对象。常用的方法有:

boolean  containsBean(String name)

Object getBean(String name)

Object getBean(String name,Class requiredType)

Class getType(String name)。

ApplicationContext:构建在BeanFactory基础上,提供了更多的实用功能:

(1)MessageSource:为应用提供国际化访问功能。

(2)ResourceLoader:提供资源(URL,文件系统)的访问支持,根据资源的地址判断资源的类型,并返回对应的Resource实现类。

(3)ApplicationEventPublisher:引入了事件机制,包括启动事件,关闭事件等,让容器在上下文中提供了对应用事件的支持。

简单了解了BeanFactory和ApplicationContext后,我们来看看两者之间的区别:

BeanFactory在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例化目标Bean.而ApplicationContext在初始化用上下文时,就实例化所有单实例的Bean,因此ApplicationContext的初始化事件比BeanFactory稍长一些,但程序后面获取Bean实例时将直接从缓存中调用,因此具有较好的性能。



用户头像

我们始于迷惘,终于更高的迷惘. 2020.03.25 加入

一个酷爱计算机技术、健身运动、悬疑推理的极客狂人,大力推荐安利Java官方文档:https://docs.oracle.com/javase/specs/index.html

评论

发布
暂无评论
Spring-技术专题-Bean的生命周期简介