FactoryBean的使用~
迪丽瓦拉
2025-06-01 06:27:15
0

初识FactoryBean:

FactoryBean是Spring提供的一种整合第三方框架的常用机制,和普通的bean不同,配置一个FactoryBean类型的bean,在获取bean的时候得到的并不是class属性中配置的这个类的对象,而是getObject()方法的返回值,通过这种机制,Spring可以帮我们把复杂组件创建的详细过程和繁琐细节都屏蔽起来,只把最简洁的使用界面展示给我们,将来我们整合mybatis时,Spring就是通过FactoryBean机制来帮我们创建SqlSessionFactory对象的

打开FactoryBean的源码,如下所示:

在这里插入图片描述

举例:

package factory;import org.springframework.beans.factory.FactoryBean;
import projo.User;public class UserFactorybean implements FactoryBean {	//通过一个对象交给IOC容器管理@Overridepublic User getObject() throws Exception {return new User();//将User交给Factorybean管理}//设置所提供对象的类型@Overridepublic Class getObjectType() {return User.class;}
}

在xml文件中配置一个类型为FactoryBean类型的bean:





测试类:

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import projo.User;public class FactoryBeanTest {@Testpublic void factory_test(){ApplicationContext ioc=new ClassPathXmlApplicationContext("spring-factory.xml");//直接通过由FactoryBean管理的类获取bean,所得到的并不是class属性中配置的这个类的对象,而是getObject()方法的返回值 User user=ioc.getBean(User.class);System.out.println(user);}
}

输出如下所示:

生命周期1:实例化
User{username='null', id=null, password='null', age=null}

那么为什么输出的结果不是像之前那样还有依赖注入和初始化呢?

无依赖注入输出的原因是:我们并没有为当前的属性赋值,当前User所对应的bean也不是我们自己配置的,而是我们通过UserFactoryBean将该对象交给IOC容器的,我们并没有为bean手动赋值

无初始化输出的原因是:初始化我们是要通过bean对象的,bean对象都不是我们手动配置的,何来为其初始化一说

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...