当前位置: 首页 > news >正文

Spring生命周期

        在Spring框架中,Bean的生命周期指的是从Bean的创建到销毁的整个过程。这个过程包括了多个阶段,每个阶段都有特定的操作。下面是一个典型的Spring Bean生命周期的概述:

一. 实例化(Instantiation)

        当Spring容器启动时,它会根据配置文件或注解创建Bean实例。

二. 属性赋值(Populate Properties)

        Spring会通过setter方法或其他注入方式(如构造器注入)将依赖注入到Bean的属性中。

三. 属性赋值(Populate Properties)

3.1 设置Bean名称和Bean引用(Set Bean Name and Bean Reference)

        Spring会调用setBeanName()方法设置Bean的名称,并调用setBeanFactory()方法设置BeanFactory的引用(如果有的话)。

3.2 调用BeanNameAware接口的方法

        如果Bean实现了BeanNameAware接口,Spring会调用它的setBeanName()方法,传递Bean的名称。

3.3 调用BeanClassLoaderAware接口的方法

        如果Bean实现了BeanClassLoaderAware接口,Spring会调用它的setBeanClassLoader()方法,传递类加载器的引用。

3.4 调用BeanFactoryAware接口的方法

        如果Bean实现了BeanFactoryAware接口,Spring会调用它的setBeanFactory()方法,传递BeanFactory的引用。

3.5 调用EnvironmentAware接口的方法

        如果Bean实现了EnvironmentAware接口,Spring会调用它的setEnvironment()方法,传递Environment对象的引用。

3.6 调用ApplicationContextAware接口的方法

        如果Bean实现了ApplicationContextAware接口,Spring会调用它的setApplicationContext()方法,传递ApplicationContext对象的引用。

3.7 调用MessageSourceAware接口的方法

        如果Bean实现了MessageSourceAware接口,Spring会调用它的setMessageSource()方法,传递MessageSource对象的引用。

3.8 调用ApplicationEventPublisherAware接口的方法

        如果Bean实现了ApplicationEventPublisherAware接口,Spring会调用它的setApplicationEventPublisher()方法,传递ApplicationEventPublisher对象的引用。

四. 调用自定义的初始化方法

4.1 调用InitializingBean接口的afterPropertiesSet()方法

        如果Bean实现了InitializingBean接口,Spring会调用它的afterPropertiesSet()方法。此外,还可以通过@PostConstruct注解标注一个无参数的方法,该方法将在依赖注入完成后被自动调用。

4.2. 调用自定义的初始化方法(XML配置或注解)

        通过在XML配置文件中使用<bean>标签的init-method属性,或者使用@Bean注解的initMethod属性,可以指定一个初始化方法。

五. 使用阶段(Ready to Use)

        此时,Bean已经完全初始化并可以使用了。

六. 销毁(Destruction)

6.1 Bean实现了DisposableBean接口,Spring会调用它的destroy()方法

        当容器关闭时,会触发Bean的销毁过程。如果Bean实现了DisposableBean接口,Spring会调用它的destroy()方法。此外,还可以通过@PreDestroy注解标注一个无参数的方法,该方法将在容器销毁Bean之前被自动调用。

6.2 自定义销毁方法(XML配置或注解)

        通过在XML配置文件中使用<bean>标签的destroy-method属性,或者使用@Bean注解的destroyMethod属性,可以指定一个销毁方法。

        这个过程确保了Spring管理的Bean在生命周期中的每个阶段都能得到正确的处理和配置。理解这些步骤对于正确管理和使用Spring Bean至关重要。

相关文章:

  • SNMP协议之详解(Detailed Explanation of SNMP Protocol)
  • 人工智能-深度学习之多层感知器
  • C++ 嵌套类 (详解 一站式讲解)
  • Flink Checkpoint 与实时任务高可用保障机制实战
  • SpeedyAutoLoot
  • Linux中的shell脚本练习
  • MCP之二_服务器与客户端实现
  • Python实例题:Pvthon实现键值数据库
  • 【计网】认识跨域,及其在go中通过注册CORS中间件解决跨域方案,go-zero、gin
  • 对VTK中的Volume Data体数据进行二维图像处理
  • 电子电器架构 ---电气/电子架构将在塑造未来出行方面发挥啥作用?
  • React速通笔记
  • OpenGL----OpenGL纹理与纹理缓存区
  • 系统架构-架构评估
  • Golang|使用函数作为参数和使用接口的联系
  • 如何使用 Redis 缓存验证码
  • 【MCP Node.js SDK 全栈进阶指南】高级篇(1):MCP多服务器协作架构
  • 在视图中交互 闪退问题
  • 有哪些和PPT自动生成有关的MCP项目?
  • 多实例情况下,实例名较长dbca失败
  • 见证上海援藏30年成果,萨迦非遗珍品展来沪
  • 新剧|反谍大剧《绝密较量》央一开播,张鲁一高圆圆主演
  • 国家税务总局:“二套转首套”可以享受贷款利息个税专项扣除
  • 新干式二尖瓣瓣膜国内上市,专家:重视瓣膜病全生命周期管理
  • “爱泼斯坦案”关键证人弗吉尼亚·朱弗雷自杀身亡
  • 大家聊中国式现代化|邓智团:践行人民城市理念,开创人民城市建设新局面