首页 > 其他分享 >SpringBean生命周期

SpringBean生命周期

时间:2023-06-28 18:31:37浏览次数:35  
标签:生命周期 实现 Spring 配置 接口 SpringBean Bean 调用

实例化:实例化一个Bean,也就是我们常说的new。

IoC依赖注入:按照Spring上下文对实例化的Bean进行配置,也就是Ioc注入。

setBeanName实现:如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的id值。

BeanFactoryAware实现:如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory,setBeanFactory(BeanFactory)传递的是Spring工厂自身(可以用这个方式来获取其他Bean,只需在Spring配置文件中配置一个普通的Bean就可以)

ApplicationContextAware实现:如果这个Bean已经实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文(同样这个方式也可以实现步骤4的内容,但比4更好,因为ApplicationContext是BeanFactory的子接口,由更多的实现方法)

postProcessBeforeInitialization 接口实现-初始化预处理

如果这个 Bean 关联了 BeanPostProcessor 接口,将会调用 postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor 经常被用作是 Bean 内容的更改,并且由于这个是在 Bean 初始化结束时调用那个的方法,也可以被应用于内存或缓存技术。

init-method

如果 Bean 在 Spring 配置文件中配置了 init-method 属性会自动调用其配置的初始化方法。

postProcessAfterInitialization

如果这个 Bean 关联了 BeanPostProcessor 接口,将会调用postProcessAfterInitialization(Object obj, String s)方法。

注:以上工作完成以后就可以应用这个 Bean 了,那这个 Bean 是一个 Singleton 的,所以一般情况下我们调用同一个 id 的 Bean 会是在内容地址相同的实例,当然在 Spring 配置文件中也可以配置非 Singleton。

Destroy 过期自动清理阶段

当 Bean 不再需要时,会经过清理阶段,如果 Bean 实现了 DisposableBean 这个接口,会调用那个其实现的 destroy()方法;

destroy-method 自配置清理

最后,如果这个 Bean 的 Spring 配置中配置了 destroy-method 属性,会自动调用其配置的销毁方法。

标签:生命周期,实现,Spring,配置,接口,SpringBean,Bean,调用
From: https://blog.51cto.com/u_11315052/6575239

相关文章

  • Bean生命周期的扩展点:Bean Post Processor
    摘要:在本篇文章中,我们将深入探讨Spring框架中的重要组件——BeanPostProcessor。首先,我们将了解其设计理念和目标,然后通过实际的例子学习如何基础使用它,如何通过BeanPostProcessor改变Bean的初始化结果以及如何利用它修改Bean的属性。本文分享自华为云社区《Spring高手之路6——B......
  • S3版本控制,复制和生命周期配置
    Hello大家好。在本课时我们将讨论S3的三个功能特性,这三个特性有一些相关性,即版本控制,复制和生命周期配置。S3版本控制首先版本控制,是将对象的多个版本保存在同一存储桶的方法。换句话说,您上传一个对象,就是一个文件,然后在其他地方又编辑了这个文件,然后在将这个文件的新版本上传到S3......
  • Spring生命周期
    SpringBean的生命周期Spring框架中的组件被称为Bean,每个Bean都有其特定的生命周期。下面是SpringBean的生命周期的主要阶段:实例化:在这个阶段,Spring容器根据Bean定义创建Bean的实例。这可以通过构造函数或工厂方法来实现。属性注入:在实例化完成后,Spring容器将会为Bean的属......
  • ESXi各版本生命周期
    参见:https://lifecycle.vmware.com/#/ProductReleaseGeneralAvailabiliyEndofGeneralSupportEndofTechnicalGuidanceEndofAvailabilityESXi6.52016-11-152022-10-152023-11-152020-05-15ESXi6.72018-04-172022-10-152023-11-152020-05-15......
  • uni-app生命周期方法
    1、应用程序的生命周期方法:定义在根组件app.vue中onLaunch()应用程序启动onShow() 应用程序显示onHide() 应用程序隐藏2、页面的生命周期方法--仿微信小程序onLoad() 页面挂载完成onShow() 页面被显示onReady() 页面可以交互onHide() 页面被隐藏onUnload() 页面被卸......
  • Servlet生命周期
     packagecom.itheima.web;importjavax.servlet.*;importjavax.servlet.annotation.WebServlet;importjava.io.IOException;//urlPatterns:访问路径@WebServlet(urlPatterns="/demo1",loadOnStartup=1)publicclassServletDemo2implementsServlet{......
  • rust 集合、错误处理、泛型、Trait、生命周期、包
    集合组织特性相同的数据;泛型可以定义任何抽象数据类型;生命周期限制所有权的作用域范围;错误处理使程序更健壮。集合一组特性相同的数据集合,除了基本数据类型的元组、数组。rust标准库提供了一些非常有用的数据结构。Vector存储列表通过类型Vec<T>定义。只能存储相同类型的值,......
  • 一文彻底搞懂 Activity 的生命周期
    作为Android开发人,如果说连Activity生命周期都没搞懂,会走非常多的弯路,所以这篇文章我就对Activity生命周期的生命周期进行一个简单的总结。单Activity生命周期的整体流程首先,我们创建一个My_A_Activity,并且打印它的各个生命周期方法。classMy_A_Activity:AppCompatActivity(){......
  • ios生命周期整理
    iosAppstates 应用的五种状态State 描述 Notrunning        应用没有被启动;或者应用正在运行但是途中被系统终止了。 Inactive     应用在前台运行,但是还不能接收事件(当时或许正在执行其他代码);一个应用通常只是很短时间停留在这个状态,很快它将切换到......
  • 如何快速发现 ASP.NET Core 应用程序中的服务生命周期问题?【转】
    在ASP.NETCore中,内置了非常强大的依赖注入容器功能。但是,如果不正确使用,也可能会引起一些问题。问题下面我们通过一段示例代码来说明这个问题。public interface IServiceA{    string Get();}public interface IServiceB{    string Get();}public class S......