【Spring框架——工厂】


什么是工厂模式?

spring的bean的创建原理就是框架利⽤反射创建出实例对象,那么工厂模式是什么?

⼯⼚模式:有⼀个专门帮我们创建对象的类,我们把这个类叫做⼯⼚类。

Plane plane = PlaneFactory.getPlane(String name);

工厂模式是怎么体现的?

⼯⼚有分为静态⼯⼚和实例⼯⼚。

静态⼯⼚:

也即是调⽤⽅法的时候,直接是xxxFactory().getXxx(); 他的实例对象的创建在static⽅法中。
在这里插入图片描述

实例⼯⼚:

他和静态⼯⼚的区别就是获得实例的⽅法是⾮静态的,要想使⽤⼯⼚类来创建对象就要先new ⼯⼚再调⽤getInstance⽅法。

在这里插入图片描述
使⽤实例⼯⼚创建对象,配置⽂件操作:

在这里插入图片描述
使⽤静态⼯⼚创建对象,配置⽂件操作:
在这里插入图片描述
FactoryBean是spring框架可以识别的⼯⼚接⼝,写⼀个实现类,实现这个接⼝,测试他的⼀些⽅法。

在这里插入图片描述

我们直接配置这个实现接⼝的⼯⼚类

在这里插入图片描述
编写测试代码

@Test

void test04()

{

Object myFactoryBean = context.getBean(“myFactoryBean”); 
Object myFactoryBean2 = context.getBean(“myFactoryBean”); 
System.out.println(myFactoryBean==myFactoryBean2);

}

测试结果:

我帮你造了个汽车!!! true

当然要是在isSingleton()⽅法中将返回值改为false,两个对象就不相等了,直接是false。当输出两个⼯⼚对象时,我们发现输出的是car的属性值,也就是说我们这个⼯⼚实现类其实就是相当于⼀个Car类。但是不能直接调⽤Car内部的⽅法。需要在getObject()⽅法中设置参数,即
``

System.out.println(myFactoryBean.toString());
//Car{name=‘红旗’, price=110000, color=‘red’}
System.out.println(myFactoryBean2.toString());
//Car{name=‘红旗’, price=110000, color=‘red’}

FactoryBean实现的类所创建的对象是在使⽤的的时候才创建并不是容器已加载就创建。

FactoryBean和BeanFactory有什么区别?

BeanFactory和FactoryBean其实没有什么比较性的,只是两者的名称特别接近,所以有时候会拿出来比较一番,BeanFactory是提供了OC容器最基本的形式,给具体的IOC容器的实现提供了规范,FactoryBean可以说为IOC容器中Bean的实现提供了更加灵活的方式,FactoryBean在IOC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式,我们可以在getObject()方法中灵活配置。其实在Spring源码中有很多FactoryBean的实现类,要想深入准确的理解FactoryBean,只有去读读Spring源码了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值