00:00
各位,下面呢我们继续来学习SPRING5框架,在刚才内容中呢,给大家介绍了4SPRING框架的基本概念,包括咱们写了一个四轮中的基本的路案例,那咱下面来学一下四轮中一个重要的组成部分,它叫做IOC容器,在IOC里边呢,主要给各位来讲解这么几个内容,我先列举出来,然后咱下面详细说明,第一个给大家先来讲一下IOC。它的一个底层的一个原理,比如说IOC是什么,它能做什么事情,它的原理是什么,把这个各位做一个详细讲解,然后这个讲解之后,我们在里边的第二部分给大家来说一下。在LC中呢,有这么一个接口。这接口它叫做b factory。把这接口给各位做个介绍,这是我们的第二部分,然后第三部分呢,咱就来实验一下LC中的具体操作,它的操作呢,里边一个描述叫做并管理,并管理咱一会具体说到底什么叫并管理,然后咱会通过两种方式实现它的操作,第一种方式基于这个。
01:21
XM文件的方式做到,然后第二种方式,咱基于注解方式把B管理做到。这是第四个与这个注解方式。把这个做到,所以咱们在loc中主要与各位讲这几个内容,第一个LC是什么,它的原理怎么样,包括一个重要接口叫b factor,以及LC中的操作,基于叉L方式,还有基于注解方式,咱们做这个B管理操作,这是我们要讲的内容,那那首先看第一个就是loc这个基本的概念和它的原理,把这个给各位做个说明,那首先咱看第一个内容,也就是我们刚才提到的什么是。
02:08
IOC。给各位自我介绍,然后这个IOC呢,咱先通过网络来搜索一下。我通过百度已经打开了,大家看到LC,它翻译过来叫什么?叫做控制反转,或者说叫反转控制,它是咱们面向对象编程中一种设计原则,它可以干什么?大家看个词,就是降低你代码之间的耦合度,A过程叫IOC,那这具体什么意思,大家看这句话啊,这里写到通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖对象的引入传递给他,也就是我们说到的。依赖被注入到对象中,这个过程叫控制反转,但这句话呢,说的比较官方,那我下面给大家用通俗的话解释一下这个控制反转或者IOC到底是什么意思,给各位写这位置。
03:11
刚才咱们看到LC呢,翻译过来它叫做控制反转,或者说反转控制,然后它到底干什么呢?说的通俗点给大家强调,就是现在我们在做我们这个操作中,咱是不是要创建类的对象啊,而用原始方式,咱是不是new这个对象,比如现在我有两个类,我在一个类中想要用另一个类中的方法,那咱把这类这个对象是不是在类中给他引用进行使用,而现在我这个过程通过IOC可以实现,而它实验的好处是什么?可以帮我们做这种。解耦的操作,那各位写一下LC做到适应,就是把我们这个。对象的创建,还有你对象之间的这个调用的过程,咱怎么做都交给我们的瑞进行管理,这过程都交给做到,而咱们使用这LC的目的刚才也看到了。
04:17
他目的是什么,就是为了让你这个耦合度。降低,这是它一个主要目的,所以咱们现在用IOC主要就是做这个事情,把你的对象创建,还有对象之间的调用过程都交给使机管理。那什么叫调用过程?比如现在我一个user类,还有一个person类,我想在user类中去调用person的方法,那user侧类中是不是要得到person对象,这过程才能进行调用,而现在这过程咱们统一都交给死文进行管理,这过程又叫做IOC,包括咱们刚才做的入案例,其实做到这个对象创建由死文做到。
05:01
这个啊,咱们说的一个概念性的一个介绍,然后再写第三句话,咱们刚才写的那个入门的案例,就是IOC的这么一种实现。所以各位先知道什么叫IOC控制反转创建对象和对象之间调用对四人做到,那这个过程它具体是怎么做到的呢?咱看第二部分给大家就来详细讲解一下loc的底层的原理,就是它底层到底是怎么实现的,把这过程给各位做一个相应讲解,然后这里边我先强调啊。其实LC的底层原理中呢,用到的技术应该各位都知道,它主要用到有三个技术,第一问技术,就是这个叫插买的解析,因为它需要插入文件嘛,需要这个解析过程,然后第二部分用到一种设计模式,叫做工厂的。
06:01
这种模式还有第三部分,它用到一个技术叫做反射,所以它底层主要用到三部分,XM解析,工厂模式,还有这个反射,用这过程做到LC里面这个这样的一个流程,那我下面给大家就来具体讲解一下它的底层原理是怎么做到的,咱就通过画图。给大家来讲解一下IOC等。底层原理啊,那我下面给各位就详细画一下这个流程图,那我们来说一下啊,首先按照咱刚才说的过程,我就举个具体例子,比如我现在啊,这里边我有两个类。就是咱们现在啊,我画两个类,我在里边写一下,用两个框代替,然后第一个类,比如这个类呢,我们是一个类叫做service,这个类那我简单写一下,比如来一个class啊,这个类我叫user。
07:00
Service。这是一个类,然后在three类里边,比如说现在我可以给他简单写一个方法啊,咱写个方法。假如说这里边有一个方法,比如这个方法我们就叫这个。ICQ这个方法啊,就是执行的这么一个方法,这个啊是我们写的一个service的这么一个类,然后把这个类做了一个简单创建,然后这个创建之后,比如现在呢,我这里边我还有一个类,假如这里边有个类,我叫这个user Du这个类,然后把这类叫这里边我叫class。然后他叫user。Du里边这个类,然后在Du类中,比如现在有个方法,这些方法,比如我是一个A的方法包,在方法中有它那个具体的方法的实验过程,所以现在大家看这里边我是不是有两个类,一个类叫user service,一个类叫user Du啊,它现在两类,比如现在我想做件事情,做什么事情呢?我想要在user threat类中去调用user侧Du中的A的方法,就在X中把A的方法做调用向实验的过程,那怎么做呢?给各位写一下啊,大家注意,如果说呢,咱们现在用我们最原始方式。
08:25
我觉得各位同学应该都会,那你说怎么做,咱在S里边调do,那第一步我把do的对象在S里边,是不是先给它创建出来,就是咱现在第一部分我给你来一个user do do等于谬上一个user。Do。咱们在里边把这对象是不是先给它创建出来。这应该没有问题啊,然后创建之后咱就调这个do里边的A的方法,把这个做个执行是不是可以了,大家注意这是不是咱们最原始方式,在里边我们先创建这个对象,然后创建对象之后调它的方法,把这实现是不是可以了,包括你最终实现咱们把这your space new一下,然后调里边一个c code,它里面也可以把Du最终做个执行,这是我们最原始方式。
09:15
咱做这个做法。就是原始方式,你创建对象,然后调方法把这实现,这各位应该很明确了,当然各位看一下啊,这种方式啊,虽然说效果能做到,但是它有一个致命的问题。什么问题?各位应该能想到,就是它里面那个耦合度。是不是太高了?比如说我现在S瑞跟Du里边关联过于紧密了,比如我现在Du它的路径变化了,那我这里边S瑞要跟着变,当你方法变了,我这里边是不是要跟着变,所以它里边耦合度太高了,就是千法动全身,当你do沟变了,我S要跟着变,所以它并不利于我们程序扩展,因为咱做程序是强调什么,是不是叫高内聚低耦合呀,让耦合度降低到最低的限度,所以这种方式呢,它虽然说能实现功能,但是它的耦合度太高了,那太高的话咱怎么解决?这里边咱就可以用不同的方案降低它的耦合度。
10:20
那下面说一下怎么解决,就是现在就是这种问题呢,有一种比较通俗的解决方案,什么方案?咱们使用一种模式叫做工厂模式。这模式不知各位是否了解过啊,我强调就是工厂模式的出现,它的目的就是为了接耦合,那咱现在可以把这个过程用这种工厂模式做一个机耦合作过程,那怎么做给各位啊,我来在下面再来画一下,但是我强调工厂模式并不是咱们的最终方案,咱最终方案要用IOC做到,我现在给大家讲的是它这么一个演变的一个过程,那我现在咱就先写一下这个工厂模式还是这个过程,我在下面画一下啊。
11:09
比如现在我这里边呢,还是有两个类。这是第一个类还是这个class啊,我们叫user。Service,这是第一个类,然后在user service里边我们有这个方法,第二方法我还是叫这个ex这么一个方法。这个啊,第一个类,包括它的方法。然后除了这个之外,比如现在我们这里边还有第二个类或小的位置,这个类比如我叫user。DAO,然后在do里边我们也是有这么一个方法,比如说还是叫这个A的方法,包括在A的方法中有它那些具体的方法体的实现,现在我们还是两类,比如现在这个过程中,咱们同样想在service里边去调用do中的方法,静脉过程时间按照刚才方式能做到,但热和度太高了,所以现在我们要加个什么叫工厂模式,那给大家写一下这怎么做啊,就是下面做法,就是呢,我们在这位置咱们建这么一个工厂类。
12:15
比如起个名字叫这个user factory。建一个工厂类,然后在工厂类中呢,我加个方法,比如来一个public,为了方便我叫C,然后这个方法,然后就返回这么一个user do这个对象,比如说叫get。Do,这个方法,然后在方法中怎么做呢?咱就直接给它吞。谬上这个user Du这么个对象,把它别作返回,所以大家看这个写法就是一个工厂类。然后这么做的话,比如现在我还想在这service里边去掉do中的方法,那怎么做?注意这个做法啊,咱就不需要在里边再去newly用工厂是不是能做到,那怎么做各位应该知道啊,很简单,咱就直接写一个这个user。
13:12
Do。Do等于这个叫user factory。点上这个get do,因为咱在这个工厂方法中,把这个do的对象是不是已经创建出来了,然后这里边咱可以直接得到这个对象,得到之后下面咱就可以调用,我们里边这方法就是Bo点上A的方法是不做个调用,所以这样的话,我们就通过一个工厂的这么一种设计模式,然后给他完成了一个接操作,你看啊,通了工厂模式里面创建对象,然后在service直接用这个工厂把对象是不是得到,然后最终调用,所以大家看到这种过程中,咱是不是就是降低了service和do之间的耦合度,通过一个工厂做到是不是一个解耦操作,所以这是它的一种解耦的一种方式,用工厂模式做到。
14:10
各位法律知道。但是通我的描述大家也看到啊,这种方式呢,虽然说把service和Du做了解耦,但你发现又出现了新的问题,工厂是不是还是有耦和度,所以咱们这里边要明确啊,咱在实际中呢,我们这个类与类之间,或者说对象与对象之间,咱们不可能完全没有耦合度,这是不可能的,只是理论上可能耦合度没有,但实际中咱们可以把耦合度怎么样降低到最低限度,而这么做的话,它并没有降低到最低限度,所以咱可以把这个做进一步的解耦,就是咱的目的是什么呢?各位要明确,我写一下啊,我们最终的目的是什么?让你的耦合度降低到最低的。
15:01
这么一个限度,而我们现在这个完全可以进一步做结耦啊,但是这个给大家讲到一个叫工厂模式,它出现目的就是为了调个操作,所以现在我们说了一个里面过程,我再重复一遍啊,咱们用原始方式呢,我们要做的过程中,咱肯定是new这个对象创建,然后调方法,这么做耦合度太高了,所以咱可以用工厂模式做个解耦,在工厂里边咱创建对象,然后通过工厂做到这个S和do中的这个耦合度的降低,但是咱这么做并没有降低到最低限度,咱们可以把它进一步的降低,那进一步降低怎么做,要用到咱们现在说这种思路叫做IOC这种原理,而IOC就可以把我们的这种。耦合度建立到最低,在过程中呢,咱除了用到工厂模式,还需要两个东西,一个叫XM解析,还有一个叫什么反射,通过这两东西,咱把它能降低到最低限度。
16:05
那这两个东西咱也大概回顾一下啊,应该之前各位应该大概都了解过,第一个差解析,也就是说对于我们的差文件里边内容给它获取值或者操作值,这里边有很多方式,比如比较常见的什么do fo j等等,然后里边还有一个叫反射。这个位要知道反射是什么呢?希望各位明确啊,反射的目的是什么?就是通过得到你类的字节码文件,然后可以操作内容所有内容。因为大家知道咱们的Java程序是不是写的文件是点Java类型文件,那我Java类型文件是不是要变成文件,而反射是干什么?就是得到你的卡文件,你卡文件都可以得到,那内容内容是不是可以操作,这叫反射,所以咱们后面还要加上叉L解析,包括反射最终能把耦合度降低到最低限度,这咱们马上来说的就是现在首先知道里面这个场景,保利过程,包括咱们有耦合度高的问题,用工厂可以结耦,咱们下面马上给大家介绍一下这个loc的里边是怎么把耦合度降移到对线度,各位先把这个图先能看懂,咱们马上进一步来讲解。
我来说两句