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

FactoryBean 与 BeanFactory

首先从字面理解: FactoryBean -->工厂Bean; BeanFactory -->Bean工厂。
即: FacttoryBean 是一个bean, BeanFactory 是bean的工厂。
使用:
1、BeanFactory: 提供获取bean的API。
在这里插入图片描述
2、FactoryBean:

public class TestBeanFactory implements FactoryBean {@Overridepublic Object getObject() throws BeansException {//用户自己创建对象TestInBean testInBean = new TestInBean();testInBean.setName("zs");return testInBean;}@Overridepublic boolean isSingleton() {return false;}@Overridepublic PropertyValues getPropertyValues() {return null;}
}

applicationContext.xml

<beans><bean id="TestFactoryBean" class="org.springframework.z_test.com.bean.TestBeanFactory"></bean>
</beans>

测试类:

       ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml");Object testFactoryBean = applicationContext.getBean("TestFactoryBean");System.out.println(testFactoryBean);

输出结果:

TestInBean{name='zs', age=null}

上述案例TestBeanFactory 实现了FactoryBean接口,并且将FactoryBean交由Spring进行管理(配置文件),在获取对象的时候获取到的是用户自定义创建的对象 TestInBean,而不是TestBeanFactory。

原理:从Spring容器中获取到的bean对象是FactoryBean或者是实现FactoryBean的,会使用getObject()获取到真实的bean对象,这个对象是由用户自己进行创建管理的,体现了扩展性
在这里插入图片描述
通过上述可以得到:
BeanFactory提供了获取Bean的方式,(BeanFactory是Spring核心接口之一)
FactoryBean是一个特殊的bean,实现该接口可以自定义实现bean的创建逻辑(扩展性)。
在这里插入图片描述

http://www.lryc.cn/news/430010.html

相关文章:

  • 【迅为RK3568开发板】OpenHarmony学习开发系列教程(第2期 南向基础篇一)
  • 编程修炼之Hibernate--- springboot启动初始化ddl过程与如何自定义修改 table 字段长度
  • TOMCAT入门到精通
  • Android笔试面试题AI答之Kotlin(18)
  • Linux基础知识学习(五)
  • 股票买卖的思路与代码
  • Eureka Server与Eureka Client详解:服务注册与发现的交互机制
  • php-fpm 如何查看哪个正在执行死循环 并终止
  • 电脑硬盘坏了怎么恢复数据?
  • cdga|某大型企业数据治理的成功转型:构建数据驱动的竞争力新引擎
  • C#使用 ModeBusTCP读取汇川Easy521PLC
  • PostgreSQL的postgres主进程
  • Java实现K个排序链表的高效合并:逐一合并、分治法与优先队列详解
  • Xinstall揭秘:高效App推广背后的黑科技
  • 星巴克VS瑞幸,新王、旧王之争给新CEO带来哪些启示
  • C语言 | Leetcode C语言题解之第354题俄罗斯套娃信封问题
  • 大型俄罗斯国际展览会介绍
  • CST软件仿真案例:圆极化平板天线仿真02
  • 【前端】vue监视属性和计算属性对比
  • 探索提示工程 Prompt Engineering的奥妙
  • 算法阶段总结1
  • 前端宝典之七:React性能优化实战精华篇
  • 【Dash】feffery_antd_components 简单入门示例
  • JAVA学习-练习试用Java实现“路径交叉”
  • element组件封装
  • Mysql (面试篇)
  • 【python】深入探讨python中的抽象类,创建、实现方法以及应用实战
  • 微前端传值
  • 《学会 SpringBoot · 依赖管理机制》
  • 全网行为管理软件有哪些?5款总有一款适合你的企业!