首页 > 其他分享 >Spring Bean 的生命周期,如何被管理的

Spring Bean 的生命周期,如何被管理的

时间:2023-09-05 14:34:13浏览次数:42  
标签:生命周期 实现 Spring 接口 Bean 调用 方法

  1. 实例化一个Bean,也就是我们通常说的new
  2. 按照Spring上下文对实例化的Bean进行配置,也就是IOC注入
  3. 如果这个Bean实现了BeanNameAware接口,会调用它实现的setBeanName(String beanId)方法,此处传递的是Spring配置文件中Bean的ID
  4. 如果这个Bean实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(),传递的是Spring工厂本身(可以用这个方法获取到其他Bean)
  5. 如果这个Bean实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文,该方式同样可以实现步骤4,但比4更好,以为ApplicationContext是BeanFactory的子接口,有更多的实现方法
  6. 如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor经常被用作是Bean内容的更改,并且由于这个是在Bean初始化结束时调用After方法,也可用于内存或缓存技术
  7. 如果这个Bean在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法
  8. 如果这个Bean关联了BeanPostProcessor接口,将会调用postAfterInitialization(Object obj, String s)方法
    注意:以上工作完成以后就可以用这个Bean了,那这个Bean是一个single的,所以一般情况下我们调用同一个ID的Bean会是在内容地址相同的实例
  9. 当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean接口,会调用其实现的destroy方法
  10. 最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法

标签:生命周期,实现,Spring,接口,Bean,调用,方法
From: https://blog.51cto.com/u_16207997/7372003

相关文章

  • 文盘Rust -- 生命周期问题引发的 static hashmap 锁
    2021年上半年,撸了个rustcli开发的框架,基本上把交互模式,子命令提示这些cli该有的常用功能做进去了。项目地址:https://github.com/jiashiwen/interactcli-rs。春节以前看到axum已经0.4.x了,于是想看看能不能用rust做个服务端的框架。春节后开始动手,在做的过程中会碰到各种有趣的问......
  • springboot加载bean失败:No matching autowired candidates found
    场景:之前在培训轮岗,一直没有干活,最近开始干活遇到xxljob,打算自己学习了解一下。在按照文档配置执行器项目时,发现怎么启动,xxlJobExecutor都没有被加载进来。解决:后来经过查阅,原来是springBoot启动默认扫描的是启动类所在的包以及其子包,而我的文件为:因此bean注入失败。把......
  • Docker 部署 Jenkins 构建 SpringBoot 工程发布镜像
    说明全部都基于Docker服务搭建使用,首先用Docker安装Jenkins环境,Docker安装GitLab版本管理系统,执行Jenkins拉取指定版本tag进行编译构建,在用SonarQube进行代码质量检测,在打包制作镜像,发布到Harbor镜像仓库,最后启动SpringBoot工程并进行访问。系统平台CentOSLinu......
  • Spring最全的依赖注入方式
    前言Spring正如其名字,给开发者带来了春天,Spring是为解决企业级应用开发的复杂性而设计的一款框架,其设计理念就是:简化开发。Spring框架中最核心思想就是:IOC(控制反转):即转移创建对象的控制权,将创建对象的控制权从开发者转移到了Spring框架。AOP(切面编程):将公共行为(如记录日......
  • 文盘Rust -- 生命周期问题引发的 static hashmap 锁 | 京东云技术团队
    2021年上半年,撸了个rustcli开发的框架,基本上把交互模式,子命令提示这些cli该有的常用功能做进去了。项目地址:https://github.com/jiashiwen/interactcli-rs。春节以前看到axum已经0.4.x了,于是想看看能不能用rust做个服务端的框架。春节后开始动手,在做的过程中会碰到各种有趣的问题......
  • springboot启动错误: 找不到或无法加载主类
    当在eclipse启动springboot项目时出现问题:springboot错误:找不到或无法加载主类解决办法:1,通过cmd命令行,进入项目目录进行,mvncleaninstall进行编译项目install后,再到eclipse上选中项目按F5刷新项目。再运行即可问题解决。2,在eclipse上选中项目 点击clean清理项目再运行问......
  • 基于springboot的美食系统
    系统使用技术:springboot前端技术:bootstrap、vue、css、js等开发工具:idea数据库:mysql5.7项目介绍:该系统框架后端采用springboot框架,前端使用bootstrap、css、js等,系统界面美观,功能全面。系统主要分为2个角色:用户和管理员,主要功能为:菜谱管理、公告管理、资讯管理,收藏菜谱并评论,趣味答......
  • 基于springboot+LayUI的校园信息发布平台
    系统使用技术:springboot前端技术:LayUI、css、js等开发工具:idea数据库:mysql5.7项目介绍:本系统是一个类似于论坛的信息发布平台,采用MVC三层架构和rest风格URL,后端使用SpringBoot框架,前端采用LayUI框架+freemarker动态模板生成,数据库使用mysql,开发工具采用idea,jdk采用1.8。系统实现了......
  • SpringBoot启动o.s.b.d.LoggingFailure… 错误解决方法
    把@SpringBootApplication改成@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})即:......
  • 基于springboot的简易聊天系统
    系统使用技术:springboot前端技术:thymeleaf、js、css、layui开发工具:idea数据库:mysql5.7项目介绍:该系统基于springboot,mysql数据库,页面美观,可以在此基础上进行二次开发。下面我们来看看部分相关功能。系统登录:聊天可以选择某个好友进行聊天,聊天内容可以是文字、表情、图片,或者带有格......