00:00
好,那下面呢,我们来看一下spring中的两大核心之一啊,叫做IOC。那其实我认为这个IOC啊,是spring中最重要的一个核心,因为哪怕我们学习到之后的这个A的时候,它其实也是以咱们的AOC为核心的啊,为基础的,好,那下面呢,我们来看一下咱们的IOC思想,首先IOC是个容器,我们在给大家介绍spring framework的特性的时候,就跟大家说过,对吧,然后容器的。特点就是它可以帮助我们去管理这个对象的整个的生命周期。好,那我们下面咱们先来看IOC思想,IOC呢叫做inversion of control,叫做反转控制,那大家要知道反转控制其实说的就是我们资源获取的方式,然后我们之前咱们所需要用到某一个资源,某个对象的时候,然后我们是需要手动的去创建它。然后呢,手动的去访问它,访问其中的各种方法,但是我们现在呢,咱们有了spring之后,我们就可以把这个对象的管理权,对象的控制权,然后完全的交给咱们的IOC容器,我们原来咱们是主动获取,而我们现在呢,咱们是被动的去接受spring为我们所提供的框架,所spring为我们所提供的对象。
01:19
这个大家注意,所以说反转控制,大家一定要理解这个思想啊,其实说白了就是原来我们自己创建,现在呢,我们需要自己创建嘛,不需要现在spring为我们提供的是什么,咱们就用什么就可以了,知道吧。好,下边大家再来看获取资源的传统方式,就比如说咱们做饭,如果说我们自己做饭,传统方式就是我们自己做饭,咱们需要买菜、洗菜、摘菜、改刀、炒菜全过程参与,费时费力,而且我们还必须要非常了解我们当前咱们做饭的整个过程,你才能把饭做好。就像是我们现在咱们的传统方式中,如果你要用到一个对象,那你就必须要知道我们当前这个对象该如何创建,该如何使用,然后这个时候我们才能够真正的去使用这个对象,对吧?但是呢,在我们反转控制的方式中呢,然后大家注意,那我们现在咱们需要自己去创建这个对象吗?不需要,就比如说我们可以点外卖,然后呢,我们只需要下单等吃就完事了,大家说是不是省时省力,而且最重要的是什么?我们需不需要知道这个对象该如何创建,不需要,我们只需要知道它能够帮助我们来提供这个对象,咱们直接来使用就行,就像是我们只需要知道你点了外卖之后,这个饭已经做好了,你来直接吃就可以,对不对?好,而且最重要的是大家注意,注意是什么啊,就是说我们当前呢,咱们使用的这个点外卖这种方式,你点外卖所得到的这个饭呀,它不一定就比你做的要难吃。
02:55
也就是说你点外卖所得到的这个饭,有可能比咱们自己做的这个饭呀,要更好吃一些。
03:01
好,就像是我们当前咱们通过反转控制的方式来获取的资源,也就是有spring为我们所提供的这个对象,有可能比有可能比我们自己创建的要更好一些。就比如说咱们把一个对象交给了spring之后,然后帮助我们所管理的这个对象,它默认就是单立的。不像是我们之前,如果我们要想来实现单例,大家还需要自己去写单例模式,对吧?就比如说咱们要来写懒汉十个汉式,但是在咱们的spring中,它为我们所提供的对象默认就是单例的,而且如果你要想实现多例,那我们只需要通过一个属性来进行配置就可以,非常的方便。所以说大家一定要看好这个反转控制的方式是什么意思,然后呢,咱们的这个啊,获取资源的传统方式又是什么意思?就是说我们一个是我们使用对象,咱们需要自己创建对象,而我们现在反转控制中就是由spring来为我们提供这个对象,Spring为我们提供的是什么,那我们就来使用什么就行,OK。
04:06
那下面大家再来看,在这儿还有一个概念叫做Di,什么叫Di呢?叫做dependency,然后injection dependency是依赖的意思,Injection是什么意思?叫做注入的意思,Di呢,大家注意,它的意思就叫做依赖注入。那什么叫做依赖注入?大家记好了,其实就是我们当前IOC的一个实现,大家可以认为IOC是一种思想,而Di呢,大家注意,它就是IOC的一种表现方,是一种实现方式。那DNA什么叫做依赖注入呢?大家注意,其实很简单,就是把我们当前呢,我们以一种提前设置好的方式来被动的接受咱们的IOC容器为我们所注入的对象。就比如说我们当前咱们比如说咱们还拿着我们的那个啊,比较经典的三层架构来说,我们现在呢,咱们有这个controller叫控制层t controller,那大家都知道控制层的作用是不是帮助我们来处理请求和响应,然后下面咱们还有这个service层,然后下面咱们还有dau层,那大家都知道control里面是不是要来访问咱们的DA service service里面要来访问DA,那换句话来说,Controller里面咱们是不是就需要来获取一个service的对象,那这个时候如果说我们之前咱们用传统方式的话,那我们是不是需要用到service,那咱们就需要自己去弄一个service对象,而我们现在呢,咱们有了反转控制,咱们有了这个Di之后,大家注意就是什么意思啊,Control里面是不是会去创建一个service的对象,而我们现在还需要自己手动去new吗?不需要,我们可以提前以一些设置好的方式,然后被动的接受,然后咱们spring。
05:51
的一个注入,好,比如说我们在这咱们可以创建一个成员变量是service,然后来为这个service设置一个什么方法,叫做set方法,因为我们现在呢,咱们的service既然。
06:04
我们不需要手动来给它赋值了,那我们现在是不是就要通过我们的程序,通过spring来为他赋值,那我们为一个成员变量来赋值的话,那大家想想就两种方式嘛,你要么用set,你要么用构造器,有参构造,对不对?比如说我们现在呢,咱们来为这个成员变量设置了一个set方法,那这个时候咱们的spring呢,它就可以通过我们的一些配置,然后通过咱们当前这个service对象的set方法,然后来为我们当前的service对象来进行赋值,而这个赋值是由谁来完成的,就是由我们spring的IOC容器来完成的,所以这就叫做依赖注入。说白了就是我们当前的controller,因为它用到了service,所以说我们从语法上来说,这个controller它是依赖于咱们的service对象的,而我当前依赖什么对象,那我们的spring就帮助我们来注入什么对象,什么叫注入,说的说的简单一些,就是为我们当前咱们的这一个类,这一个对象所依赖的对象来进行赋值的过程,就叫做注入。
07:11
所以说大家注意,啥叫依赖注入啊,说白了就是为我们当前spring所管理的对象中的属性进行赋值。记得这一句话就行,这就叫做依赖注入,就是以我们当前提前定义好的一些方式,比如说你的set方法,咱们说了为成员变量赋值就两种方式,要么用set,要么用什么,要么用有参构造,所以说咱们以提前定义好的方式,然后通过spring呢,来为当前的这个成员变量来进行注入,其实就是为当前的成员变量进行赋值的一个过程,OK吧,这个大家注意,所以IOC大家听好了,它是一种思想,而我们当前的Di是我们IOC思想的一种表现方式,它的一种实现方式,这个大家注意啊,好,那IOC思想呢,大家一定要好好的去体会一下,要知道是干什么的,对吧?然后如果说咱们这里面的这个比较官方的一些描述,大家如果看不懂的话,那大家就多看看咱们的这个例子。
08:12
OK吧,啊,然后其实用最简单的话来说就是什么意思,就是我们在传统方式里面,我们需要自己去拗对象。而我们现在有了spring之后,然后我们需要用到哪个对象,那这个对象就由谁来扶持呀,就由我们当前咱们的IOC容器,然后来为我们提供这个对象,那它是如何来表现的呢?它如何来实现的呢?就是用咱们的Di,就是Di叫依赖注入,什么叫依赖注入?就是我们当前咱们依赖于哪个对象,那我们当前就可以提前定义好的方式,然后被动的去接受我们spring所注入的对象。其实。简单一点就是说我依赖哪个对象,咱们的spring就可以来为当前这个对象来进行扶持,OK吧,好,所以说大家一定要能够自己去描述,把咱们的IOC思想呢,然后自己给描述出来,因为咱们以后面试的时候可能会问到这些问题,那我们不能呢,咱们说我理解了,但是我说不出来,不行,然后咱们理解了之后,我们也能够把这个东西说出来,这才是我们真正的理解了啊。
我来说两句