首页>>后端>>Spring->spring中bean的生命周期?

spring中bean的生命周期?

时间:2023-12-02 本站 点击:0

springbean的生命周期是什么?

Spring 容器可以管理 singleton 作用域 Bean 的生命周期,在此作用域下,Spring 能够精确地知道该 Bean 何时被创建,何时初始化完成,以及何时被销毁。

而对于 prototype 作用域的 Bean,Spring 只负责创建,当容器创建了 Bean 的实例后,Bean 的实例就交给客户端代码管理,Spring 容器将不再跟踪其生命周期。

每次客户端请求 prototype 作用域的 Bean 时,Spring 容器都会创建一个新的实例,并且不会管那些被配置成 prototype 作用域的 Bean 的生命周期。

各种接口方法分类

Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类:

1、Bean自身的方法:这个包括了Bean本身调用的方法和通过配置文件中bean的init-method和destroy-method指定的方法

2、Bean级生命周期接口方法:这个包括了BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean这些接口的方法

3、容器级生命周期接口方法:这个包括了InstantiationAwareBeanPostProcessor 和 BeanPostProcessor 这两个接口实现,一般称它们的实现类为“后处理器”。

4、工厂后处理器接口方法:这个包括了AspectJWeavingEnabler, ConfigurationClassPostProcessor, CustomAutowireConfigurer等等非常有用的工厂后处理器接口的方法。工厂后处理器也是容器级的。在应用上下文装配配置文件之后立即调用。

springbean生命周期

Spring的生命周期是指实例化Bean时所经历的一系列阶段,即通过getBean()获取bean对象及设置对象属性时,Spring框架做了哪些事。Bean的生命周期从Spring容器实例化Bean到销毁Bean。

本文分别对 BeanFactory 和 ApplicationContext 中的生命周期进行分析。

一、BeanFactory实例化Bean相关接口

Bean级生命周期接口:(4个)

1、BeanNameAware

//待对象实例化并设置属性之后调用该方法设置BeanName

void setBeanName(String beanName);

2、BeanFactoryAware

//待调用setBeanName之后调用该方法设置BeanFactory,BeanFactory对象默认实现类是DefaultListableBeanFactory

void setBeanFactory(BeanFactory var1) throws BeansException;

3、InitializingBean

//实例化完成之后调用(调用了BeanPostProcessor.postProcessBeforeInitialization方法之后调用该方法)

void afterPropertiesSet() throws Exception;

4、DisposableBean

//关闭容器时调用

void destroy() throws Exception;

这4个接口都在包 org.springframework.beans.factory 下,它们是Bean级生命周期接口,这些接口由Bean类直接实现。

容器级Bean生命周期接口:(2个)

1、抽象类:InstantiationAwareBeanPostProcessorAdapter

实例化前/后,及框架设置Bean属性时调用该接口。可覆盖的常用方法有:

//在Bean对象实例化前调用

@Override

public Object postProcessBeforeInstantiation(Class? beanClass, String beanName) throws BeansException;

//在Bean对象实例化后调用(如调用构造器之后调用)

@Override

public boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException;

/**

* 在设置某个属性前调用,然后再调用设置属性的方法

* 注意:这里的设置属性是指通过配置设置属性,直接调用对象的setXX方法不会调用该方法,如bean配置中配置了属性address/age属性,将会调用该方法

* @param pvs 如 PropertyValues: length=2; bean property 'address'; bean property 'age'

*/

@Override

public PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) throws BeansException;

2、接口BeanPostProcessor

实例化完成之后调用该接口。可实现的接口方法有:

//实例化完成,setBeanName/setBeanFactory完成之后调用该方法

public Object postProcessBeforeInitialization(Object o, String s) throws BeansException;

//全部是实例化完成以后调用该方法

public Object postProcessAfterInitialization(Object o, String s) throws BeansException;

这两个接口都在包 org.springframework.beans.factory.config 下,一般称它们的实现类为“后处理器”。后处理器接口一般不由Bean本身实现,实现类以容器附加装置的形式注册到Spring容器中。

当Sprig容器创建任何Bean的时候,这两个后处理器都会发生作用,所以这两个后处理器的影响是全局的。用户可以通过合理的代码控制后处理器只对固定的Bean创建进行处理。

Bean级生命周期接口解决Bean个性化处理的问题,Bean容器级生命周期接口解决容器中某些Bean共性化处理的问题。

spring bean的生命周期是什么?

总共分为4个阶段:

一阶段:Bean的实例化和DI(dependency injection)。

二阶段:检查Spring Awareness。

三阶段:创建bean生命周期回调。

四阶段:销毁bean生命周期回调。

概念产生:

Spring认证框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。

Spring是Java EE编程领域的一个轻量级开源框架,该框架由一个叫Rod Johnson的程序员在 2002 年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架 。

以上内容参考:百度百科-Spring认证

bean的生命周期是什么?

bean 实例的生命周期如下:

1、为了演示spring的生命周期,首先必须要加入spring的相关包。

2、新建一个SpringBoy类 实现BeanNameAware,      BeanFactoryAware,      InitializingBean,      DisposableBean

要注意加入相关的包。新建一个processor类,用于处理bean,叫作bean处理器,在xml中作如下配置:bean class="zpx.life.Processor"/

3、分别实现它们的方法。并在方法中加入必须的信息,以便后面理解与观察。

4、在配置文件中配置springboy。指定初使化方法与销毁方法。

相关如下

好处:

Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。例如,可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。

它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。

Spring对工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Spring/9976.html