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

发布于 2020-9-29 18:32
浏览
0收藏

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提供了两个访问接口:BeanFactory和ApplicationContext

       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-9-29 18:32:52修改
1
收藏
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐