00:00
各位同学大家好,下面呢,我们继续来演示,通过注解凹二完成使用注入。大家看我课件里边一共列了有六个场景,我把这个场景这张图给大家截个图,咱们来具体看一下这六个场景,因为咱们把前四个已经也是完成了,那我们来看一下。首先大家看第一个场景叫属性注入,也就是说我们的过程中,咱们可以创建一个属性,然后在属性上边加注解O2完成注入,这是第一个场景。然后再来看第二个场景,第二个场景叫site注入,什么意思呢?就是咱们建个属性,然后生成它的的方法,在方法上加注解。另外有第三个叫构造方法注入,就是咱们写一个有层构造,然后在构造方法中完成注入。另外还有第四种情况叫擎参上注入,也就是说在构造里边擎参上加上奥注解进行实现,这是咱们刚才演示的前面的四个情况,那下面各位再来看,最后还有两个场景,咱们现在看第五个场景。
01:14
这是什么呢?给大家特别说明。我这里强调啊,就是如果说呢,当你这里边只有一个有参数构造,那这个时候我们在做注入的时候,这个注解是可以省略的,那什么意思呢?给大家演示一下第五种场景,只有一个构造函数,那可以没有注解直接完成注入。咱们来做个测试。我就以这个CR为例,在CTRL里边咱们来注入这个service,通过它我们进行实现,我在里边写一下。第五种。方式或者第五种,这种场景只有一个,有参数构造。
02:02
咱们可以不加主点,那什么意思呢?给大家写一下啊,首先第一个咱们创建一个属性,然后生成它的有参数的构造。我把这个生成一下,然后生成之后大家看啊,按照我目前的写法,我CTRL里边是不是只有一个有参数构造,那这个写的时候其实你可以不加注解,不管是在方法上还是行参上,还是属性上,这注解可以不用加,这个service会完成注入,它可以省略这个注解,这就是第五种方式,那咱们来试一下这个效果,你看我目前写法中没有加这个注解,它可以完成注入。咱们执行一下啊,看一下效果是怎么样。然后大家看是不是可以输出,这就是咱说的方式,但是我强调啊,只有一个有三构造,比如说我现在啊,我在写构无参数构造,我在哪个构造。
03:01
然后大家看我这个写法,我这么写的话,它里边是不是就有两个构造了,就不是一个构造,那这个时候我们再进行执行,咱们看目前的效果是怎么样的。大家看是不是就报错了,它就不能注入,因为你目前有两个构造,你只有一个构造,可以实现两个构造,它就不对了,这就是我们说的第五种方式,只有一个有参构造函数,这个时候注解可以不用写,直接生成它能完成这个注入。这是咱们提到的。然后这个之后呢,我们再来看第六种场景,也就是最后一个场景,这个场景是什么呢?我强调啊,这个场景表示咱们可以再加一个注解,这注解叫call fair,用两个注解进行实现,然后他来做什么呢?咱们先做个说明,刚才我们提到了,如果说我们用这个auto,它默认是不是根据类型进行匹配,根据它进行多导,而加上fair,它还根据名称进行匹配,所以咱们最终我们用这两个注解实现一个根据名称进行匹配,那我下面给大家演示一下最后这个效果。
04:16
那怎么演示呢?我这里边啊这么来做,咱们就重点写这个service注入do这个过程,咱就以它为例给大家写一下。比如现在啊,我这么来做,我一个Du的接口是不是可以有多个实验类,那咱们就再创一个实验类,我们进行演示。我在这里边做个创建,比如现在我再来写个类,这个类呢,为了跟之前区分,我就叫这个user,就咱们叫DA。L啊,为了然后在里边让它也是实现我们这个user口,让它也做个,然后在里边呢,我们做一个方法的实现,最终我们做一个输出,我们就直接输出一下。
05:07
在里边我来快速写一下,然后咱就输出这个DA。输出。另外这个实现类的对象,我们也是做一个创建,所以现在我们就完成了,那完成之后呢,咱们现在先做个测试,看一下目前它是什么样效果,咱们先做个测试试一下啊。大家看目前我一测试他是不是就报错了,大家看他报的什么错啊,我们来看一下。这里告诉我们啊,说这时候do根据奥拓二进行注入,他在注入的过程中发现了两个这个对象。为什么发现两个对象呢?咱们看service里边,Service里边呢,我们是这个叫二根据类型注入,但是根据类型注入的时候,因为它里边有两个实验类,所以它里边就报错了。
06:04
这个时候我们就不能再根据类型注入了,所以我们要根据名称进行注入,找到你具体那个实验类的这个对象,那咱们来具体写一下,咱们来做个实验。就是最后一种方式。我写一下啊。最后的方式。使用两个注解。根据名称进行注入。那我们来写一下啊,咱就直接来一个private user DAO,然后在user do使用上,我们先加上一个注解。我加到这位置,第一个注解叫o to y,然后加上之后我们再加上一个注解,就是刚才咱说了一个叫Co fair。然后加上callli fire之后在call fire里边,根据名称我们进行这么一个注入,那我们加上它的这个名字。
07:04
我加到D位置啊,里边有一个Y加上名字,比如现在我就把这个do进行注入,因为咱们提到它默认名字就是类的首字母小写。把这个拿给他拿过来。所以现在我们就手动进行了注入,根据名称做到通过奥加call fire完成注入,现在就可以了,可以之后最后咱们把效果做个测试,试一下最终的这个结果。咱们来看一下啊,大家看DA是不是就输出了,就是我刚才写到里边的这段话。所以以上我们就完成了这么五种情况。这个都做到了啊,具体说应该是六种情况,那最后把这个六种场景给各位最终做演示,咱们再重复一遍,通过凹凸完成使用注入。
08:03
首先第一个场景叫属性注入,也就是说我们定义一个属性,然后在属性上边加这个注解,比如咱们刚才写这个CTRL里边注入service,或者service里边注入do,咱们第一种方式都这么来做的,在属性上边加上注解,这是第一种方式。然后第二种方式叫set方法注入,它的做法就是咱们写属性生成它的set方法,在方法上加上奥尔注解。然后第三种方式,我们是用构造方法注入,生成有仓构造,在构造方法上加注解。第四种方式叫行参商注入,在有参构造的行参里边加注解注入。还有下一种方式,刚才提到的,比如说我现在在这个过程中,如果说啊,你只有一个有仓构造,那这个时候这个注解是可以省略不写的,它能直接完成注入,这是第五种情况。还有最后一个,比如咱刚才这个场景,一个接口可以有多个实验类,如果说你根据类型注入,那他会找到多个对应的对象,这样的话咱就没法注入,所以这个时候我们要根据名称注入,那怎么做到?我们的做法就是通过凹二加fire,根据名称进行注入,指定你的这个名字,因为咱们提到它默认的名字是你类的首字母小写。根据它我们完成注。
09:36
所以以上就是咱们完成的,通过注解奥尔完成注入。
我来说两句