00:00
各位同学大家好,在前面内容中呢,咱们已经介绍了IOC容器的基本概念,包括把咱们要完成的案例的环境做了搭建,那下面呢,我们就基于两种方式来实现并管理,包括创建对象,包括助属性,那首先我们看第一种方式,基于叉买络方式进行并管理,第一个案例环境我们已经搭建过了,咱之前做到的大家看啊,首先有个子模块,此文6IOC。包括里边。封城中引入依赖,然后咱们建立一个类,包括建立一个此文的配置文件,那下面呢,在里边我们基于插入文件做并管理,那咱主要要做什么,我们先快速浏览一遍,然后一个一个给大家做个演示,咱们来看一下啊,我在图里边给家也来画一下。首先我们演示的第一个就这个叫做获取B的这种方式,比如咱们之前我在配置文件中配置,我会根据它的ID属性获取到,另外可以根据类型获取到,以及根据ID和类型获取到,这是我们的第一个要演示的就是这个获取B的这种三种方式。
01:13
这给大家来讲,这里这是我们第一个要演示的。然后这里边当然有一些特殊情况,一会咱们继续来说,然后第二个给大家演示,就是依赖注入,咱们演示两种方式,一种是用set方法注入,还有一种是用构造气井注入,我这里写一下第二个给大家也是这个。依赖注入,Set注入和构造器注入第二部分,然后这个演示之后,我们的第三部分给大家演示,就是一些其他值的处理,比如说你看啊,有特殊值。包括有对象类型、数组类型、集合类型,以及P命名、空间注入等,这个咱们会进行演示,就是一些特殊类型的注入,这是第三个写一下。
02:06
比如咱刚才提到的集合、对象、数组等等,然后这个之后,下面呢,给大家说明一个问题,叫做B的作用域,比如我们创建对象,它默认是单例,怎么设成多例,包括它的特点,这是我们要演示的这个内容我先列出来,一会咱们会一个一个进行演示。然后B的作用之后,下面呢,会讲一个重要的内容,叫B的生命周期,就是我现在这个对象从创建到销毁的过程中,它具体是执行了哪些方法,或者说他具体会做哪些事情,给各位会详细说明一下B的生命周期,然后这个之后,后面咱们讲一个叫B以及基于方式自动完成,包括咱们根据类型,包括根据其他方式做一个自动的配置。比如大家看这里边by type是根据类型,By name根据名称,所以以上是咱要演示的主要的这么几个内容,给各位先清楚,下面呢,咱先看第一个内容。
03:10
这个内容获取病的不同的方式。那我下面给各位。那我们来详细演示一下。第一个内容,那这个怎么演示,我来写一下啊,首先第一个大家看我的案例里边呢,有一个类,然后我现在比如说我想把这个类的对象进行创建,那咱们之前讲过是不是要在叉L中进行配置,所以这里边我来写一下。写到这个位置,就是咱们现在。创建这个user类的这个具象。把这个创建,那怎么配置呢?各位应该记得啊,咱们加上一个标签,在标签中呢,加上一个ID属性,还有class属性,然后class里边加上你这个类的这个包类,或者说它的类名,把这个给他直接。
04:07
复制一下。这个权利名加上这个user,然后给ID起个名字,我们就叫user,就是一个配置,然后配置之后下面呢,我们写一个测试类来获取一下这个对象,我在这里边我们来写一下。咱们来个测试类,就叫test user。然后在test user中我们写个main方法,把这个对象咱给它获取一下,那怎么获取,咱们讲过啊,第一个我们用四分中的一个对象application context的等于new,上一个叫class pass叉买lo application context,加上你的配置文件的路径名称,因为我们这么用是在类路径下,然后之后下面呢,咱就获取一下咱们这个对象,或者说获取下我们的B啊,咱四分钟位的区分它叫B,那怎么获取呢?大家看我课件里边啊,有三种方式,第一种方式根据ID定获取。
05:14
那咱们来演示一下。根据ID获取B,那怎么做呢?写一下啊,我们用count泰里边的方法叫get b里边加上你这里边的ID属性,咱们是叫user,然后最终呢回的是一个object,咱们可以把G对象做一个转换,转换成。尤瑟,陛下。所以这个就是一种方式,根据ID获取到你这个B,或者说获取到我们的对象,那咱们输出来看一下。我把user我就直接输出了啊,根据ID获取bin的这个过程。然后咱们执行一下啊呃,当然这个过程中呢,有一个log的日志,咱们把那文件给它是复制过来,因为之前咱们演示过,我也放到这里边,为了咱看到更加的明确。
06:13
现在这些环境都准备好了,然后准备好之后,下面呢,咱们把它做一个测试,我在test user里边把main方法直接执行,我们看一下效果怎么样。咱们啊,等他执行。然后大家看啊,你看前面有它的信息,它告诉我们它是加载这配置文件,然后创建了一个右侧对象,这优侧对象呢,目前是一个单例对象啊,这个单呢,咱一会儿讲到这个的时候,就是作用域的时候,会具体来说,目前咱先看它的结果。大家看这里右侧对象是不是就输出了,这输出是那个对象的地址,所以这就是我们的第一种方式,根据ID获取你的B,这个咱们也到这里,大家把这知道。
07:00
然后这个之后我们继续演示,还有第二种方式,就这么写,完全可以,还可怎么做,根据类型来获取,这是第二种方式。那给大家演示一下啊,根据类型获取B怎么做呢?我写一下contest get b。大家看啊,它这里边呢,给我们重载了很多的方法,大家看第二个方法,它传的是一个class类型,然后这里有一个属性的名字叫type,是你要求的类型,所以咱们加入什么,就是你要返回类型的这个class,咱们返回是user,我加上一个user.class最终返回就是user对象啊,咱为了区分,比如这个叫USER1,就是第一种方式,这个我叫user色二,这就表示根据类型来获取到。那这个咱们也是做个输出。然后看一下这个效果是怎么样的。
08:02
咱们给他输出一下啊,这是第一种方式,这是第二种方式。把这个直接执行一下,呃,这应该是U42啊,U42别写错。执行一下,看一下效果怎么样。我们做个测试啊,然后大家看第一种方式,ID得到对象,第二种方式根据类型获取对象,这个答案就完成,完成之后还有第三种方式,第三种怎么做呢?大家看我这里写到啊,我可以根据ID和类型获取,就是既有你的ID,有你的类型,把两个加到一起来用,那咱们写一下啊。Contextt.get b就是咱们现在用到应该是这个重载的方法,第一个加上ID的属性值,第二个加上类型,最终返回到还是这个user对象,咱们叫user。三,为了区分。
09:01
现在这种方式我们就完成。完成之后,最后啊,咱们就给他做一个最终的测试,当然三种方式写的过程中,里边有一些细节问题,这咱们一会儿来说,大家先知道三种方式分别怎么会到你的病。这个拿过来,根据ID和类型获取到B,这个是USER3。然后咱们执行看它的结构。然后大家看啊,用三种方式把这个对象是不是都可以得到,那这个我们就讲到这里啊,三种方式都可以实现,所以各位记住啊,获取B3种创建方式,第一个ID获取,第二个类型获取,第三个ID加类型获取到,这些都可以得到。所以咱们把这个先引到这里。
我来说两句