00:00
各位同学大家好,下面呢咱们继续来演示自动装配,刚才呢咱完成一个环境的搭建,分别创建了controller service,还有do,那下面呢,咱们通过配置来完成自动装配,那怎么做呢?首先我们先做第一件事情,就是我们因为它本身用的还是set方法注入,所以首先第一个我在C里面先定义这个service类型的属性,在里面定义,然后定义之后生成这个属性的set方法。把这个多导我这里写一下啊,定义一个属性,然后生成它的set方法。这位置生成属性的。Set方法,这是第一部分,然后同样在里边咱们定义DAO类型的属性。并且生成do类型属性的set方法,把这个咱们先写出来,那这里边我来写一下。
01:07
我先来到CR里边,在CTRL中呢,定义一个属性,咱们写一个user service user service生成它的set方法啊,其实只需要set可以了,Get可以没有给它就生成一个set用就可以了,把它做一个生成。这里边快速生成一下啊set方法。现在这就可以了,然后可以之后我在里边可以调用service维中的方法进行实现,那咱们来调一下啊,一会咱们做注入调用service的方法,User service里边这个方法叫a user service,这个咱就完成了,完成之后我们再来到service的实验类中,因为你的接口它里边不能你要来到实验类中,在实验类里边我们再加上DAO类型的属性。加上user do user do同样生成它的方法。
02:06
把这个加上,然后最后在里边也是调用DA中的方法进行实现,所以现在这个准备工作就完成了,完成之后呢,最后咱们写的就是配置文件,那我最终来写一下配置文件呢,咱们在这个里边我们来建一个配置文件,这配置文件我给它起个名字,我们叫这个B。凹凸就是自动。点叉L。然后创建之后在里边进行最终的配置,那怎么配置呢?给大家写一下啊,大家看我现在是不是有control service map,所以咱第一部分把三个对象就创建,就是创建controller,创建service,包括创建,那我们来创建一下啊,我们先创建controller。加上它的包类路径,我把这个直接复制一下。
03:03
先把它做一个创建。URL cler。这是我们的第一部分。然后之后我们继续来写,下面呢,我在创建这个。B。ID。然后加上class,把这个我们做一个创建,那咱们写一下啊service,注意咱们要复制它这个类的这个全路。把这个咱们复制过来,然后给它起个名字,这个名字随便起啊,我就叫这个user了。这是咱们建的这个service这个对象,这个完成,然后最后我们在创建这个do的对象,把这个我们最终给它做到。那咱们写下啊,这个do啊,跟它类似,我用它咱们快速给它改一下了。这个叫user DAO。
04:00
然后加上我们这个路径。U Du啊,它的实验类注意不要写错啊,是你的实现类的一个对象,所以现在这个完成完成之后各位注意啊,按照咱们之前讲的方式,咱可以这么来做,加上你的user service,然后加个ref,把这个进行注入,这么做是不是可以了,但是这么注入我们是一个一个进行,现在咱们要做一个叫自动装配进行事件,那怎么做给大家写下啊。我们来进行实现。在这个bin标签中呢,有个属性给大家写一下啊,这个名字它叫做。然后里边主要有两个值,一个叫一个,就是根据类型,还根据名字,那咱们加一个by type,根据类型注入,包括CTRL里边注入service来根据类型注入,Service里边注入do也根据类型注入,所以现在这个就完成了,这就叫自动装配,就加上个o to y,根据类型或者根据名称注入,我这么写是根据类型注入,现在咱们就做到了。
05:14
然后做到之后,我们最后把它做个测试,试一下这个效果怎么样。那咱们测试一下啊,我在里边呢,创建一个测试类,就叫T的user。然后在里边我给它加上一个测试方法,我们来验证一下啊。Application contest等于new上一个class application contest加上配置文件的名字就是B,应该叫凹凸点叉L。然后在里边我们得到这个CTR啊,给它获取一下。咱们看一下这个名字啊的名字叫user control。
06:02
包括加上它这个类型。点class,最终返回的是user control,然后咱们用control调用里边的这个方法,我们来调一下这个方法应该叫写下啊,应该是这个叫a user,咱们做的调用,因为大家看啊CTRL。做做输出,他掉了service service中做做输出,最终掉了do,这里边我们都进行输出,那咱们最后把这试一下,就看我们刚才写这个自动装配,根据类型进行注入,最终能不能实现。咱们测试一下啊,看一下结果。等他执行。然后大家看啊,最终输出里边controller service还有DAO是不是都执行了,证明在那个根据类型自动装配就实现出来了,然后它的过程会怎么做呢?你可以理解为我在CTRL里面注入service,然后注入的是这个类型,它根据这个类型会找到这个类型对应的那个,到这里找到,包括你里注入do,根据你注入这个类型找到它对应的,最终完成注入,这个叫根据类型注入自动装配。
07:19
这个咱们做一个说明,然后在过程中呢,有这么一个细节问题给大家说明啊,咱看这段话。就是如果说啊,咱们这过程中没有一个能兼容这个类型,就是没有找到匹配类型,那它值就为空,如果说你有多个类型的值,那会个错误,就这个错误,比如说我现在比如说你看啊,我这个user接口有多个实现类,那这个时候再注入它会找到有多个对象,它就最终会报错,所以咱们保证它是唯一的这么一个对应的类型。这个就是根据类型完成自动装配,这咱们就也是完成了,然后完成之后下面还有一种方式叫根据名称做装配,那这个什么意思,给大家也来演示一下啊,我这里来解一下。
08:10
这段我先给它注掉,然后咱重新写一下啊,刚才这段是根据类型自动。装配。根据它做到。这一段我先给它注掉啊,但下面呢,根据名称进行自动装配过程跟它一样,我用这个咱们快速给它改一下,说一下这个什么意思啊。这是名称。把这个改一下,就是这个值我们改成这个叫by name。然后这里边也改成叫by name,根据名称进行注入,那我现在大家看啊,是不是都改成了根据名称注入,咱们把这个再来试一下,看一下结果怎么样,能不能完成输出。大家看效果是不是一样的,而它的区别在于哪里强调啊,根据类型注入,它根据你的属性类型找到对对象,但是名称注入,你要保证你的这个属性名字跟你里边的这个名字要保持一致,那什么意思呢?比如说咱们点一个效果啊,比如我现在啊,我这名字我叫这个名字。
09:22
UDOL,大家看我叫他,而这个名字叫这个之后呢,如果你用类型匹配,那肯定没有关系,但是现在我根据名称匹配,它会出错了,大家看它会出什么错,咱们执行一下啊,看一下效果。咱们根据效果看它的问题,然后大家看啊,Controller service都正确了,Du是报错了,报了什么错?他说啊,因为你这个次点侧Du等于空,也就是我们service里边注入Du的时候,这Du没有注入进来,这个值等于,所以它里报错了,为什么于?因为咱们现在根据名称注入,你要保证你的属性名字跟你这个ID的名字要保持一致,你看啊,我这个叫user DOL,我这个是不是叫user do,两个名字不一样,所以他就报错了,比如把它改成这个user色do,这样的话我们再执行。
10:22
咱们再试一下。看这个特点。你看现在是不是就正确了,所以这就是我们完成的自动装配,根据类型,包括根据名称进行自动装配,大家这这过程也说到这里啊,咱就完成了基于叉ML方式进行bin管理的操作,包括咱分别演示了获取bin的多种方式。包括演示了依赖注入,用set方法注入,用构造器注入以演示的特殊值,包括对象数组集合类型的属性注入以及P名称空间,包括里边的引入外部文件,以及最后这个作用域生命周期fashion b,还有这个叉lo的自动装配。
11:08
所以以上啊,这个部分我们就也是完成了。
我来说两句