00:00
好,那下面呢,我们来看一下这个IOC容器在中的实现,其实就是咱们spring相关的一系列的API啊,好,那我们现在把咱们的对象交给了IOC容器来管理之后啊,大家想想,那我们现在咱们要想来获取IOC容器所管理的对象,那我们首先咱们是不是就要来获取IOC容器?好,那所以说我们现在一定要知道这个IOC容器,它在咱们的代码层面,它是如何来表示的,好,那spring呢,提供了IOC容器的两种实现方式,首先第一个大家来看,叫做b factory,这是我们IOC容器最基本的一个实现,然后咱们从名字里面,咱们就能够看出来他到底用的是哪一种设计模式。然后既然叫factory,那说明他用的是工厂模式,工厂模式是咱们的设计模式中的一种,它可以将我们当前咱们创建对象的过程来进行隐藏,直接来为我们提供我们所需要用到的对象,好然后但是这个并factory平常我们用的不多,但是大家要知道为什么,因为它是spring内部来使用的一个接口,面向spring本身,然后他提供不提供,对开发人员的使用不提供啊好,那我们平常咱们作为开发人员,我们来使用的是谁呢?大家再往下看,在这有一个叫做application comp,那这个东西是b factory的一个子接口,它提供了更多的高级特性,当然了,咱们知道那子接口的功能肯定要比负接口的功能要多,对吧?好,但是呢,这个东西它才是面向咱们spring的使用者,咱们所有的场合,咱们都要用application contest,而不是用这个be factory,这个大家注意啊,好,但是呢,Application contest毕竟是个接口。
01:44
啊,那接口中只有方法的声明,有方法的实现吗?没有,所以说下面咱们就要来看一下application context它的一些主要的实现类,好,然后大家来看,然后这是咱们的b factor,或者说我们也可以这样啊,咱们也可以在这来创建一个工程,咱们先把这个工程创建出来,因为咱们不创建工程的话,我们当前的项目里面是没有什么的,是没有spring的依赖的,所以说我们是看不到的啊,然后咱们在这可以来点击右键去有一个Mo。
02:17
好,然后咱们来点击next,然后在这咱们叫什么?咱们就叫做spring,然后下划线叫hello word,哎,这是咱们的一个入门程序,然后大家再来看它的group ID,咱们就叫做com.at硅谷点spring,好,然后咱们来点击finish。然后我们把咱们当前所需要用到的依赖给导入进来,首先它的打包方式,然后是架包,然后咱们的依赖都有什么呢?大家注意啊,需要用到这几个,这东西在哪呢?是在我们的这个位置啊,然后我们的IOC容器在spring中的实现,下面在这就是我们的实验一对吧,然后大家可以把这个一类啊,然后先放到我们当前咱们的工程中,好,那我们的spring,咱们所使用的这个版本呢,是5.3.1的版本,然后下面咱们就可以去搜索我们当前咱们的C容器的一个具体的实现了,好,咱们在这呢,来找到classes,然后叫做b FA b factory,那大家看啊。
03:20
好,然后大家注意这就是一个b factory,这就是我们IOC容器最基本的实现,那我们现在咱们是不是应该是来找到它的一系列的子接口以及实现类,那我们来点哪个呢?大家注意叫做CTRL加H,可以来查看我们当前接口或类的一个继承实现关系,好下面呢,我们再往下看,大家注意这是b factory啊,然后我们往下咱们来找到谁呢?然后大家来看一下在这,然后它下面呢,在这它的一个子接口就叫做application context,大家看在这个位置啊,那咱们刚才说过它们两个的区别并factory呢,然后是。
04:00
在咱们的spring的内部来使用,而我们当前的application contest这个东西,它才是我们当前咱们留给程序员来使用的,对不对?好,然后再往下看,大家注意这有这有一个叫做configguable application contest,那这个东西虽然说咱们用的不多,但是大家也要知道configuable application contest比较着它的负接口来提供了刷新容器或关闭容器的方法。叫做configgu RI application contest这个大家注意啊,也就是说它比较着它的负接口,提供了刷新容器和关闭容器的方法啊好,下面呢,我们再往下看,大家注意到这都变成抽象类了,然后再往下呢,然后咱们再往下看啊来。好,大家看一下,那我们最终咱们要来使用的两个实现类分别是什么呢?大家看好在这个位置,一个叫做few system XL application contest,一个叫做class pass XL application contest,那这两个就是我们当前咱们的application contest,也就是咱们IOC容器的一个实现类,然后这两个有什么区别呢?咱们从名字里面咱们就能够看出来。
05:14
File system叫做文件系统,然后我们现在是通过我们文件系统中的一个叉L来获取咱们的IC容器,而这个意思是从我们当前咱们的类路径下的一个叉ML文件来获取IOC容器,那所以大家想想这两个咱们用的哪个比较多呀?咱们是不是应该用下面这个比较多,为什么?因为我们当前咱们的这个配置文件,我们是不是一般对于咱们当前的工程来说,我们的配置文件是不是一般都是要写在类路径下的,这个咱们之前说过,不管是咱们的这个maven工程里面,不管是你的Java还是咱们的resource,然后最终呢,你的Java里面的内容和咱们的resource里面的内容,它都会被加载到咱们的内路镜下,所以说咱们这个用的比较多,那如果说你要用这个的话,这叫什么?
06:04
这叫做文件系统,什么叫文件系统?就是从我们的磁盘上开始访问,比如说咱们的D盘的某一个目录下面的某一个叉L文件,通过这个叉ML咱们来获取IOC容器,好,但是大家想想,那我们以后咱们的项目呀,咱们是咱们的Java工程要打成架包,咱们的外部工程我们要打成袜包,对吧?然后我们当前的架包,咱们是要放在其他的工程里面来引用,来使用的。这个大家都知道吧,你架包嘛,你想想咱们现在咱们你的泡沫点叉ML中设置的坐标是干嘛的,那不就是来引用某一个架包的嘛,对不对,所以说咱们的架包会不会只在我们当前的电脑上来使用呢?不一定是不是有可能会在别的电脑上来使用,那这个时候大家想想,那我写的这个磁盘路径是不是只是在我电脑上这个磁盘相对应的位置有这个文件,那我的其他电脑上这个磁盘所磁盘位置所对应的。
07:01
磁盘这个路径所对应的磁盘位置有这个文件嘛,不一定嘛,对不对,所以说这个方法呢,这个实现类咱们用的比较少,然后下面这个咱们用的比较多。因为它是针对于我们当前的工程中的路径来说的,对吧?然后咱们的配置文件一般都是放在resource下,那所以说resource下面的内容是一定会被加载到咱们的类路径下的,OK吧,好,大家注意,这是它的两个实现类,我们用的比较多的啊,就是这个class pass,叉l application contest OK啊行,那咱们再来回到我们当前的笔记里面,大家注意,这就是给大家刚才咱们在idea里面给大家展开的这个结构啊。好,然后大家再往下看,然后这里面就是它的一个区别,比如说这个大家看一下啊,Class pass,叉l application contest,通过读取类路径下的叉L格式的配置文件获取IOC容器,然后这个是通过读取文件系统中的某个叉L获取IOC容器,哪个用的比较多?上面这个用的比较多啊,上面这个为什么用的不多呢?再说一遍,因为咱们以后的Java工程要打成架包,所以说它不一定就一定,它不一定就非得在我们当前的电脑上来运行,所以说如果你把它给放到其他的电脑上,那大家说你写的磁盘路径,它对应的位置也会有这个文件吗?不一定吧,是不是啊,好,所以说这个咱们用的不多啊。好,再往下configuable application contest这个东西大家还记不记得在哪啊,这个东西在这个位置啊,是application context的一个子接口,然后这个接口里面咱们说了它提供的有什么,除了application context本。
08:44
真的功能之外,它还提供了关闭刷新咱们当前容器的功能,OK吧,好,再往下,然后呢,这个大家注意,这个叫web applicationtest,那这个东西又是干什么的呢?如果我们当前咱们创建的是一个web应用,那我们当前咱们所创建的IOC容器,它就是web application contest。
09:06
好,现在咱们看不到,因为我们现在创建的是一个什么,创建的是一个Java工程,等到我们在以后咱们讲了spring VC的时候,咱们从源码里面大家就能够看到咱们所创建的IOC容器,它就是web application contest OK吧,好,OK,那这个是我们当前咱们的这个IOC容器在spring中的实现。那我们现在呢,咱们也已经知道这个IOC啊,从代码层面上,我们该通过哪一个接口,或者说哪一个类型来获取来表示,那我们下面咱们就来写一个入门案例,看一下我们当前咱们的spring框架该如何来使用,看一下我们当前是如何把一个对象来交给spring的IOC容器来管理的,我们又如何来获取IOC容器,咱们又如何从IOC容器中来获取我们当前所管理的某个对象来使用这个对象,OK吧,好啊。
我来说两句