首页 > 其他分享 >Spring - IOC - Bean生命周期

Spring - IOC - Bean生命周期

时间:2024-07-10 17:57:45浏览次数:20  
标签:调用 Spring 方法 Bean 生命周期 IOC public

目录:

Spring - Bean生命周期

在Spring框架中,Bean的生命周期是指从Bean的实例化开始直到销毁的过程。下面是一个典型的Spring Bean的生命周期:

  1. 实例化:

    • Spring容器根据配置信息(如XML配置文件或注解)创建Bean的实例。
    • 如果Bean是通过构造器注入,那么会调用相应的构造器来创建实例;如果是无参构造器,则直接调用默认构造器。
  2. 属性填充:

    • Spring根据配置信息将其他Bean注入到当前Bean的属性中。
    • 对于@Autowired注解的字段,Spring会查找并注入匹配的Bean。
  3. Aware接口回调:

    • 如果Bean实现了BeanNameAware,则调用setBeanName(String name)方法。
    • 如果Bean实现了BeanFactoryAware,则调用setBeanFactory(BeanFactory factory)方法。
    • 如果Bean实现了ApplicationContextAware,则调用setApplicationContext(ApplicationContext context)方法。
  4. 后置处理器回调:

    • 如果有BeanPostProcessor实现类注册在容器中,它们的postProcessBeforeInitialization(Object bean, String beanName)方法会被调用。
  5. 初始化方法调用:

    • 如果Bean定义了init-method属性,那么对应的初始化方法会被调用。

      @Component
      public class A {
          @PostConstruct  //等价与init-method
          public void init() {
              System.out.println("初始化--->@PostConstruct");
          }
      }
      
    • 如果Bean实现了InitializingBean接口,那么afterPropertiesSet()方法会被调用。

      @Component
      public class A implements InitializingBean {
      
          @Override
          public void afterPropertiesSet() throws Exception {
              System.out.println("初始化--->InitializingBean");
          }
      }
      
  6. 后置处理器再次回调:

    • 如果有BeanPostProcessor实现类注册在容器中,它们的postProcessAfterInitialization(Object bean, String beanName)方法会被调用。
  7. Bean可用:

    • Bean现在可以被其他Bean使用,或者处理请求。
  8. 销毁:

    • 当Spring容器关闭时,如果Bean定义了destroy-method属性,那么对应的销毁方法会被调用。

      @Component
      public class A {
          @PreDestroy
          public void destroy() {
              System.out.println("销毁--->@PreDestroy");
          }
      }
      
    • 如果Bean实现了DisposableBean接口,那么destroy()方法会被调用。

      @Component
      public class A implements DisposableBean {
      
          @Override
          public void destroy() throws Exception {
              System.out.println("销毁--->DisposableBean");
          }
      }
      

标签:调用,Spring,方法,Bean,生命周期,IOC,public
From: https://blog.csdn.net/weixin_43320796/article/details/140327318

相关文章

  • Java面向对象小游戏--文字版格斗游戏(附带全套源代码)->基于JavaBean
    一、前言java部分的基础学习已经完结,接下来给大家分享的大多为java相关的案例分析,也会有一些小项目,这点不要太过于担心,主要还是基础部分要打牢固。java部分的难点就在面向对象这一点,学习C语言的小伙伴们应该是第一次听说方法。这点也是和C语言相差巨大的地方,不过对于学习过pyt......
  • springboot公寓租赁系统-计算机毕业设计源码03822
    目 录摘要1绪论1.1研究背景与意义1.2选题背景1.3论文结构与章节安排2 公寓租赁系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3系统用例分......
  • 基于springboot+layui+thymeleaf的学生成绩管理系统设计与实现(源码+SQL+使用说明)
    本项目适合做计算机相关专业的毕业设计,课程设计,技术难度适中、工作量比较充实。完整资源获取点击下载完整资源1、资源项目源码均已通过严格测试验证,保证能够正常运行;2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;3、本项目比较适合计算......
  • 基于SpringBoot + SpringCloud+ElasticSear的在线教育管理系统设计与实现(MySQL、Mongo
    本项目适合做计算机相关专业的毕业设计,课程设计,技术难度适中、工作量比较充实。完整资源获取点击下载完整资源1、资源项目源码均已通过严格测试验证,保证能够正常运行;2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通;3、本项目比较适合计算......
  • springboot项目一直在打印Redis链接信息Reconnecting, last destination was
    控制台打印如下:15:03:26.279[lettuce-eventExecutorLoop-1-4]INFOi.l.c.p.ConnectionWatchdog-[log,171]-Reconnecting,lastdestinationwas/192.168.0.6:637915:03:26.282[lettuce-nioEventLoop-4-2]INFOi.l.c.p.ReconnectionHandler-[lambda$null$3,174]-Rec......
  • SpringBoot 整合 MyBatis 时报java.lang.IllegalArgumentException: Unable to instan
    配置   报错信息: 原因:版本不兼容,降低 mybatis 版本 问题解决: ......
  • Spring推荐使用构造注入而不使用 @Autowired 注解
    参考:https://www.youtube.com/watch?v=CT8dbbe783shttps://blog.csdn.net/qq_43371556/article/details/123529701https://blog.csdn.net/qq_33721382/article/details/104071801https://blog.csdn.net/fudaihb/article/details/139231192什么是依赖注入DI(Dependency......
  • Java中的SpringAOP、代理模式、常用AspectJ注解详解
      这篇文章主要介绍了Java中的SpringAOP、代理模式、常用AspectJ注解详解,Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务,例如审计和事务管理进行内聚性的开发,需要的朋友可以参考下 +目录一、AOP简述回到主题,何为AOP?AOP即面向切面编......
  • SpringBoot 入门
    步骤1:创建maven工程创建一个空Maven工程,如下:步骤2:pom.xml文件中添加SpringBoot依赖需要添加SpringBoot项目父级依赖和SpringBoot项目相关依赖,pom.xml内容如下:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"......
  • IDEA社区版搭建Spring工程(04-加载配置文件及加解密)
    SpringMVC加载配置文件的几种方式通过context:property-placeholde实现加载配置文件在springmvc.xml配置文件里加入context相关引用<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:conte......