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

SpringBean模块(三)具有生命周期管理能力的类(1)AutowireCapableBeanFactory

一、介绍

1、简介

AutowireCapableBeanFactory 是 Spring 框架中的一个接口,位于 org.springframework.beans.factory 包下,它提供了更底层的 Bean 实例化、依赖注入和生命周期管理能力,即使这些 Bean 没有通过常规的 @Component 或 XML 注册到 Spring 容器中

2、常见用途
  • 手动创建对象并注入依赖

  • 将已有对象注入到 Spring 容器的上下文中

  • 在运行时对非 Spring 管理的类进行依赖注入

3、注意事项
  • 它不会将对象注册为 Spring 管理的单例。如果你想让对象作为 Bean 注入到其他地方,需要再使用 BeanDefinitionRegistry 注册。

  • 使用时一定要确保 Spring Context 已初始化完成(通常在 ApplicationReadyEvent 之后执行)。

4、典型用法
@Autowired
private AutowireCapableBeanFactory beanFactory;public void createAndInject() {// 创建实例(没有依赖注入)MyCustomBean obj = new MyCustomBean();// 注入依赖字段beanFactory.autowireBean(obj);// 或者:创建并自动注入所有依赖MyCustomBean autowiredBean = (MyCustomBean) beanFactory.createBean(MyCustomBean.class);
}

二、常见API

方法功能
autowireBean(Object existingBean)对已有对象进行自动注入(字段、setter)
createBean(Class<T> beanClass)创建并自动注入一个 Bean 实例
configureBean(Object existingBean, String beanName)对现有 Bean 进行完整配置(包括注入、初始化等)
initializeBean(Object existingBean, String beanName)执行 Bean 生命周期相关的初始化逻辑
applyBeanPostProcessorsBeforeInitialization/AfterInitialization手动触发 BeanPostProcessor

三、使用场景

1、运行时注册动态 Bean 并注入依赖
MyService myService = new MyService(); // new 出来的,不是 Spring 管理的
beanFactory.autowireBean(myService);  // 手动注入依赖(如 @Autowired 字段)
2、在插件或动态模块中加载的类想要使用主项目 Bean
Object pluginBean = classLoader.loadClass("com.example.PluginImpl").newInstance();
beanFactory.autowireBean(pluginBean); // 注入主项目中的 Service 等

http://www.xdnf.cn/news/556435.html

相关文章:

  • DOS常用命令及dos运行java
  • 协程+Flow:现代异步编程范式,替代RxJava的完整实践指南
  • NVIDIA Earth-2 AI 天气模型 DLI 课程:解锁全球风云的未来之匙
  • 4大AI智能体平台,你更适合哪一个呐?
  • 第六部分:第三节 - 路由与请求处理:解析顾客的点单细节
  • ⭐️白嫖的阿里云认证⭐️ 第二弹【课时3:大模型辅助内容生产场景】for 「大模型Clouder认证:利用大模型提升内容生产能力」
  • 基于YOLO11深度学习的变压器漏油检测系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
  • 通过 API 获取 1688 平台店铺所有商品信息的完整流程
  • Vue+eElement ui el-input输入框 type=number 输入无效。赋值输入框也不显示(问题已解决)
  • FaceFusion 3.2.0 参数配置参考
  • Java实现定时任务的几种常见方式
  • 新闻媒体发稿:社会实践返家乡主题如何选择
  • 《扣子空间:开启AI智能体办公新时代》
  • DAY29 超大力王爱学Python
  • 理解阿里云的MQTT
  • 探秘「4+3原型驱动的交付模式」如何实现软件快速定制
  • MySQL 数据库迁移方法汇总
  • 第五届机器学习与智能系统工程国际学术会议(MLISE 2025)
  • vform自定义表单研究
  • 《算法笔记》11.8小节——动态规划专题->总结 问题 A: 第二题
  • OSA实战笔记一
  • LLM笔记(十一)常见解码/搜索算法
  • canvas浅析(一)
  • Java 09Stream流与File类
  • ragas precision计算的坑
  • 使用frp内网穿透本地的虚拟机
  • 几款常用的虚拟串口模拟器
  • springboot+vue3实现在线购物商城系统
  • MS16-075 漏洞 复现过程
  • Ai学习之openai api