00:00
各位同学大家好,刚才呢,我们从概念上给各位介绍了什么是LC容器,那下面呢,把LC里边的一个基本过程给大家画个图,来详细总结一下里面的过程,那首先第一个各位要明确啊,我们在LC容器里边。放的是我们的这个B对象,而它放这B对象使我们的结构是不是一个map集合进行放的这个对象,那各位要明确它为什么用map集合呢?为什么不用list集合,为什么用map集合?其实很明确啊,Map的最大特点是不是KY6,第一个咱们放很简单,根据K放Y6,然后取也方便,根据K能得到它的外值,所以它用的是一个map集合,包括你看死里边很多地方会有很多的map来放大那种。那下面呢,我们继续来看这个IOC这个过程给大家啊画个图,咱们来做个说明。
01:01
我就画到这里,首先啊,咱先看一下之前我们的一个入门案例的代码,咱们做法中第一部分写了一个叉L配置文件,然后写完配置文件之后,最终测试用cont加载配置文件,最终得到对象,然后进行调用,现在我们就说这个过程。那怎么做的呢?给大家画一下啊,首先我们里边的第一部分。这个位置咱们肯定有一个叉L的配置文件。然后在配置文件中呢,你可以理解为就是配置你这个B的这个定义信息,或者说叫类的描述信息,包括实际中咱们不仅有配置文件方式,还有别的方式,比如说大家看我的课件里边,你可以用注解方式进行实现,咱们现在专门与这个配置文件为例,注解方式过程跟它基本类似,所以咱们理解为这部分就是我们这个病的这个定义信息,它的名字叫这个b DeFinition。
02:10
我把这个给大家解一下。DeFinition。这是咱们说的这个部分,比如说现在你可以这么理解,我在配置文件中呢,就配置好我这个类,我想要什么样的这个对象,把这个信息给他,给IOC,就告诉IOC我要什么样对象,由IOC给我创建,然后给我返回,这个就叫的定义信息,这是咱们的第一部分。然后有bin的定义信息之后,下面呢,咱把这个bin的定义信息给他,是不是要加载读取到的IOC里面去,这个过程中呢,我们可以用到一个抽象,或者说用到一个接口。那我写一下啊,这部分我们有一个抽象。或者说就是一个接口。为什么是个接口呢?刚才提到实际中你可能有很多种方式,可能是配置文件,可能是注解,所以它有一个接口,接口中有不同的实现类,根据不同方式进行读取,进行加载。这里边这个接口名字叫b DeFinition reader。
03:20
这是它的这个接口,我把这个啊给大家稍微改一下,然后咱们通过源码来看一下这个接口b DeFinition。咱们找一下啊。我们来看到它就是这个,然后各位看啊,这是一个接口,然后在接口中呢,有不同的事类,你看有b read,有这个有等等,对不同方式它做不同的加载,所以用这个抽象进行加载,配置文件进行读取。然后它加载读取之后,把这文件就是给它直接加载到咱到IOC容器中去,比如往下画下。
04:06
我现在这个过程就是这个,比如我们就代表这个IOC的这个容器。写到这里啊,这就是那个IOC容器。然在这里边呢,目前就是有我们这个的这个定义信息,这个它就把这个加载过来了,然后加载之后呢,这B的定义信息有之后,那咱根据它我们是不是要创建这个对象,或者说把这个B进行实例化,这下面就开始进行这个实例化的过程。我写到这里啊,就是。实例化,实例化通俗说就是咱们new这个对象,那大家想一下啊,我们进行实例化,可以怎么进行实例化。这个可以怎么做?
05:00
这各位应该都清楚啊,有很多种方式,比如说你可以new进行实例化,你可以用工厂实例化,就是建过工厂,通过工厂返回这个对象,另外可以用反射进行,而现在此文里面怎么做呢?在此文中呢,有一个工厂,它叫做b factory。我写一下啊。B factory这个工厂,它是由这个BFA这工厂加反射方式,最终把这个B进行实例化的,所以它里面是这么做的,那咱们看一下这个反反,咱之前写过,先得到你的类的这个class,这个对象就是类码文件,不管你是用点还是用类,还是点方法都能得到这个象,然后通过里面的new最终创建对象。所以此文里边通过B对工厂加反射最终进行的实体化,它是这么一个过程。
06:01
这个为明确,然后实例化之后我们继续来看啊,比如现在我这个做了实例化,但实例化之后呢,我目前对象应该说是一个什么,是不是一个空对象,你空对象没有实际意义,所以把这对象要做个什么,是不是初始化呀,我只有初始化之后最终才能进行使用,而初始化完成之后,那最后得到的就是咱们最终可以使用这个对象。我这里写一下啊,比如咱们就叫这个最终的这个对象,就最终可以使用的这个对象。这是一个过程,然后咱们把这个最终对象得到之后,那咱们在代码中大家看我可以用这个get b得到你这个最终这个可以使用这个对象。通过它最终可以得到以上这个过程,当然我们在实例化的过程中,我们也可以把这个类的定义信息进行修改,这里边也可以做到,在此文中也就用这种机制啊,所以各位先知道这个总体的过程。
07:06
这是我们做的一个流程的说明,给各位再重复一遍啊,就是各位可以这么理解,咱们告诉LC容器我要什么样的对象,就是配置这个bin的定信息,然后把这个加载过来,LC根据你这个信息给我们创建对象,然后它创建用到b factor对工厂加反射创建,就是咱说的实例化,实例化之后进行初始化,最终得到我们最终可用对象,咱用context get b能得到这个对象。这就是IOC里一个基本的过程,各位把这个给能看懂,把这过程你能用自己的话能描述出来。然后咱们再看课件里边,啊,课件中写到IC嘛,控制反转这种思想可以降低耦合度,提高程序的扩展力,然后它就是把对象创建和对象与对象之间的关系都交给这个容器进行管理,就是IOC,你告诉他我要什么,对象给我回了,然后通过这个完成这么一个过程。
08:12
以上就是LC容器一个。过程的说明。
我来说两句