00:00
各位刚才呢,我们讲到了基于拆方式注入集合类形属性,那我们下面继续往下学习,那咱下面要讲什么呢?给各位来说一下,咱还是学习IOC这个操作中这个并管理。那我们下面来给大家讲一下,在我们的B里边呢,字本中有两种类型的B,咱来介绍这两种类型的B,而什么叫B呢?就是咱之前一直提到我们获取B或者获取B实例,它具体说指的就是咱们这个对象或者这个实例,所以在我们spring里边有两种类型B,包括咱们自己创建,这是一种普通的,它还有一个死里边内置的一种B,所以咱们来讲里边内是一种B,它叫做factory bin。给各位写一下。叫fairy b,注意啊,它叫factory b,不是咱们之前说那个b factory不一样的,这里指的是B,那这里边我先写第一句话,各位先知道,在我们的re里边,它有这么两种类型的病,首先一种呢,是我们的这种叫做普通的病,也就是我们现在咱们自己创建这个就是一种普通病,另外还有另外一种。
01:21
这种病叫什么?它就叫做工厂病,或者咱说这个叫factory病。工厂变。或者说也可以叫factory b。这个啊是思里边的两种病,那两种病呢,它们有不同的特点,或者他们之间有不同这么一个区别,那我下面给各位来说一下,这是里边一个重要的概念,各位给他知道,然后我强调啊,首先第一个就咱说这个普通病,那普通病有什么特点呢?咱直接看一下我们之前写的配置文件。咱随便找一个看一下,大家看啊,你看我的这段配置中,大家发现在这里边呢,ID中是咱给这B是不是起个名字,通过它能得到B的实力,而可里面加什么。
02:12
是不是你这个B的这个类,它那个包的路径了,而这个路径中咱加值什么叫book,最终咱们在操作中,咱获取B的这个实例的名字是不是这个book,也就说你现在写的这个class里边是book,那咱们返回的B实例是不是就是这个book,这就叫普通病。但我这么说,有同学会想,它本来是不是应该就是这个样子,但是我强调这种方式普通B的特点就是你在bin标签里边定义你的class里边这个类型,那你返回的就这么类型,这是叫我们说的普通币。另外还一种叫什么,它叫做工厂B,工厂B什么特点就是你现在比如说我定义是book,可那我返回这个类型,它可能不是book,可可以是其他类型,比如说反应是一个DPT或者其他类型,这个叫工厂B,也就说它们的区别是什么。
03:06
你到普通币定义什么类型就返回什么类型,当然我们说的工厂币,你定义类型跟返回类型可以是不一样的,这是它们的不同特点,那各位写一下普通B,它的特点就是我们在那个spring的配置文件中。你定义的bin类型就是你的返回类型,不说各位是否能听懂啊,我再重复一遍,比如你看我这里边我定义的类型是这book,可而咱们得到返回的类型是不是也是不类型,这个叫普通币,另外还有一种就是咱说这个叫工厂B。工厂B什么意思呢?就是你在配置文件中定义的B的这个类型可以和你返回的类型不一样,比如我定义是book可以返回别的类型,这个叫工厂B,这是它们一个主要的区别,那我下面把这个效果给大家演示一下,普通币咱都说过了,就是里边这个过程咱可以做到,然后下面我演一个工厂B,咱看工厂B该怎么做,这工厂病呢?是死么?里边内置的一种病的类型,包括它咱们用框架中很多地方,它内置会用到这个过程。
04:25
大家对它要有一个了解,那来说一下怎么做,我来演示啊,首先第一步呢,咱就可以创建一个类,让这个类作为工厂B。就让这个类。作为咱们这个工厂B,那怎么作为工厂B呢?然后这个类啊,需要让它实现一个接口就可以了,这接口名字就叫做FAB。这是一个接口,这是第一步,然后这个选完之后第二步,因为咱们实验的接口第二步是不是要实现接口里边的那个方法,咱们在这个实现的方法中可以定义你返回这个就是B的这么一个类型,或者你的对象类型,所以它主要是证据步骤,那下面把这个给各位快速在我的里边写一下代码,很简单,主要你知道这个特点,工厂B定义类型跟反应类型可以不一样。
05:27
那我现在做操作,比如现在我这么来做啊,在里边我再来建个包,这个包比如就叫BEYB,为了区分我叫LVCB。Factory b,然后在FAB里边呢,现在我来创建一个类,比如这个类我给它起个名字,假如名字我就叫这个买币就叫这个名字啊。这是我们创建的一个普通的这么一个类,咱们把它创建了,然后创建之后,比如现在呢,我想要创建这个类的对象,按照咱之前方式,我在配置文件中进行配置是不是可以了,那我现在可以做个配置,为了明显我还是在建个配置文件,我教这个bin三叉L里边做配置,跟咱之前写的一样啊,就用这个bin标签做到,那我们来写一下啊。
06:21
在里边我们写病标签,然后里边呢,加上你这个类的这个包类路径把它加上。就是。里边子分五。然后这个叫bay b点上这个名字叫买B,然后给它起个名字,我就叫这个买B啊,就叫这个名字,所以大家看现在咱们把这个对通过配置文件是不是创建出来了,然后创建之后,我下面在测试类中,咱们把这个对象用我们之前的方式给他获取一下。比如你看我现在啊,这个我们叫T的,就这个我叫T这个三啊,就这么一个测试,然后里边得到咱们这个BAN3这个配置文件,然后它返回是咱这个买B的这个对象,我先写这个基本结构啊,这个叫买B。
07:15
把这个咱给他拿过来,然后这个依赖引入,最终我就把这对象我们做个输出,然后咱们现在输出一下,咱看一下啊这么一个基本特点,然后咱会比较看它的不同。大家看现在我一执行,咱看我们控制台的输出,你看里边这对象是不是输出了,就是现在我这里边啊,我这么做它叫什么,就是咱说这个普通币,我现在定义类型叫买币,然后返回类型是不是也是买币,这个肯定没有什么问题,咱之前一直这么做,但是我现在想这个买B作为什么,作为一个factory b,那怎么做,咱刚才提到让这个类呢,先实现一个。
08:01
接口,这接口名字就叫factory b,然后在接口中呢,有它的方法,这方法咱看一下啊,其实里边主要有三个方法。啊,有这么三个方法,然后把三个方法我都给他拿过来咱看啊,然后看三个方法是什么,第一个方法就是返回类型,就是返回你这个病的这个实例,第二个反应你的类型,第三个你看什么,它是否是一个单例,第单例咱一会一会会提到,我们先看前面,主要咱看第一个方法,这个方法是什么呢?就是按照我刚才说到的FB什么特点。你在里边定义类型,根据返位类型可以不一样,那怎么不一样,咱需要在这个方案里边来定义一下,你返回的那个,就是B的那个对象,在里边做定义,而怎么定义,你看它默认反应什么是个object,那我们的做法就是呢,在里边呢,加上一个泛型类的写法,假如说这个咱们找一个,我就找这个cos。
09:06
让他返一个cos。然后加上之后你看啊,这里边报错了,让他也是有个cos,然后咱把cos,比如现在如果它的底层肯定用到那个,就是工厂加反射做导,我现在为了方便,我就直接把这对象给他扭下来啊。底层肯定用到工厂这种方式,我给它手动是一个值,比如叫ABC,然后最后把这cos做个返回,所以大家注意这个写法,咱们这么做之后呢,比如说现在你看啊,它就表示我设置买bin这个部分返回的对象是cos对象,而不是买币,这就叫代币,你定义的类型跟反应类型不一样,它是由这个方法决定的,那现在写完之后,我把刚才代码咱们还是执行一下。咱看它会有什么特点啊,刚才咱没加之后它是对的,大家看。是不是就报错了,看他报什么错啊,这里写到。
10:02
说你这里边这个买币,然后后面又提到这位置有一个叫这个cos,说你现在这个类型它不匹配,类型不一致,所以目前就报错了,所以咱这么写之后,这里边就不写买币了,写谁就是咱们的cos与他现在返回是一个。Co。比如我叫cos。咱们把这cos我现在改完之后执行打开效果。大家看到。是不是输出了,值是不是有了,所以你发现啊,这个过程中它的特点就是你在配置文件中定义的这个返回类型跟你这里边得到类型可以不一样,而这类型在哪里定义,在咱们这个fe bin这个接口中的get object方法中做定义,这就叫做FB,你定义类型跟返回类型可以不一样,所以咱们现在把这个代码给各位做这个编写,大家把这个特点给它掌握,就你主要知道什么叫BYB,你定义类型跟返回类型可以不一样,然后怎么不一样,在你的接口中的方法中进行定义就可以了。
11:18
这个啊,我们做例说明,帮我把这个测试类给各位也复制过来,各位知道他这个。特点以及配置文件啊,配置文件简单就是一个b ID class。所以说咱们现在就把这个什么叫fe b给各位做了演示,希望通过我的演示各位知道这个概念到底是什么意思,这个我们就说完了,然后最后快速重复一遍啊,咱们在死文里边两种病,一种叫普通病,一种叫工厂病,普通病就是你在配置文件中定义什么类型,那我就反应类型,工厂病是定义类型跟反应类型可以不一样,刚才我这个定义类型叫买币,但是我反类型是不叫cos,而cos。
12:02
在接口的方法中进行这么一个定义,所以这样的话,咱们把这个FB,我们就完成演示,各位把这概念给他要牢牢记住。这个啊,我们就完成了。
我来说两句