00:00
好,那下面呢,我们来学习一下基于注解的自动装配,好,那我们之前咱们学习的是基于叉ML的自动装配的效果,因为我们之前呢,咱们是需要在配置文件中手动去配置并标签的,所以我们当时是通过并标签中的autowell属性来实现的自动装配的效果。但是我们现在呢,然后咱们使用的是注解加扫描的方式来管理B,那所以呢,那我们是不是就不能再使用基于插描的方式了,那我们现在呢,咱们也是需要通过注解的方式来实现自动装配的功能的啊好,那首先咱们先把咱们的场景给模拟一下,然后我们需要在咱们的controller里面。来访问咱们的user service对象,然后在咱们的service的实现类中呢,然后咱们需要来创建一个user DA的对象。好,然后比如说呢,我们在control里面来写一个方法,Public返回值是word,咱们就叫做CU,跟我们之前写的功能一样,然后在这呢,咱们来调用user service中的save user方法,好,然后我们在service中来把方法创建一下啊。
01:12
好,这个功能是用来保存用户信息,好然后再来找到service的实现类来对方法进行重写,那我们直接来调用U的do里面的CU一样的,好,然后再在do中去创建这个方法,好,这也是对吧,杠星星啊,然后咱们是要来保存用户信息。好,然后再来找到do的实现类来对方法进行重写,那咱们同样也是输出一句话,就叫做保存成功,OK啊,行,那我们现在该如何实现自动装配的效果呢?大家还知道什么叫自动装配吧?其实就是通过我们所指定的策略来为当前IOC容器所管理的并中的这个成员变量,然后来进行一个赋值的操作,对吧?好,那所以现在该怎么实现?很简单,我们只需要在咱们的成员变量上,然后来添加咱们的it out well的注解就行。
02:08
好,大家注意啊,咱们需要用到的注解叫做a o to well的注解,就是自动装配的意思,那其实我们在之前咱们基于叉L的自动装配,咱们用的是it,咱们用的是O凸well属性,而现在咱们用的注解大家看好了啊,叫是叫这个it out to well的注解啊好,那我们在之前呀,咱们用属性来设置的时候,咱们是不是需要来设置这个成员变量的get跟set方法,当然最重要是它的set方法啊,那我们在这咱们需要设置吗?大家注意不需要设置。也就是说我们用注解来实现自动装配的时候,咱们并不需要为当前的成员变量来设置S的方法啊好,下面在这呢,也是咱们直接在上面添加一个it out well的注解就行。然后我们下面可以来测试一下,比如说咱们把这下面这些输出的这些代码呀,全部都给它注释掉,然后咱们直接来调用user controller里面的什么方法呢,叫做CU,然后下面我们来一个执行。
03:08
大家看啊。好,那大家会发现在这它就保存成功了,那保存成功了说明什么?说明咱们user control里面的user service是不是确实已经被赋值了,对吧?U的service m PL里面的UD Du呢,也确实已经被赋值了,那所以咱们的自动装配的功能呢,咱们就完成了,好那下面呢,咱们主要来讲一下这个注解啊来。那我们从它的两方面来讲,首先第一方面呢,就是它的这个它所能标识的位置,第二个就是它的原理,当然咱们先把它的功能来写一下,It out well对吧?然后来实现什么,来实现自动装配的,实现自动装配功能的注解,OK,然后咱们要讲的第一个问题啊,就是这个o to well,注解能够啊,能够标识的位置,哎,标识的位置,也就是说它能够标记的位置,它都能够在哪一个位置来进行使用,就像是我们刚才啊,咱们给大家写的,咱们是把它给标识在哪了,大家注意标识在哪儿,标识在咱们的成员变量上啊,标识在成员变量上,那如果咱们标识在成员变量上的话,此时咱们不需要来设置谁不需要来设置成员变量的什么set方法,这个大家注意啊。
04:31
好,那我们刚才咱们这个效果已经看过了啊,那咱们再接着往下看,那它还可以放在哪,大家注意,然后它还可以标识在,然后咱们的set方法上啊,Set方法上也就是说如果我们当前咱们的这个成员变量啊,对吧,咱们现在不把它加到这了,如果说这个成员变量它有相对应的set方法,那我们把它给加到S的方法上,大家注意它也是能够实现功能的,OK吧,现在我们再来一个执行,大家看。
05:04
好,现在大家看一下是不是也是保存成功,那所以说S的方法也是可以的,那我们再来看它还能标识在第三个位置,大家注意,其实也就是我们为成员变量赋值的这几种方式,S的方法可以为成员变量赋值,那咱们还有什么可以为成员变量赋值,大家想一下是不是应该是为当前成员变量赋值的构造,有参构造上,哎,有参构造有参构造上,这个大家注意啊。标识在啊,为当前成员变量赋值的有参构造上,那下面呢,我们把这个来测试一下,比如说大家看好,咱们把它注释掉,因为这三种方式大家用其中一种就行,知道不,那大家应该用哪个,大家自己想好了,反正我平常来使用的就是把它直接添加到咱们的成员变量上就行,这个set方法呀,还有有参构造咱们就不需要再重新创建啊,好,下面咱们来找到构造器,然后把这个auto well的放到咱们的有参构造上,这个时候我们在这咱们再来一个执行,大家看啊。
06:09
好,大家会发现咱们仍然能够保存成功,那是不是就说明我们这三种方式都行啊,大家看你用哪一种啊,我建议大家呢,也是来使用哪一种啊,使用我们当前的成员变量这一种,直接把咱们当前注解加到成员变量上,那它就可以自动的来玩,它就可以来完成一个自动装配的效果啊行,那这是我们讲的它的第一个问题,就是它能够标识的位置,然后它的第二个问题,咱们就要重点来讲一下它的原理了,对吧?那它到底是怎么来实现自动装配的呢?就像是我们之前呀,然后咱们讲基于叉ML的自动装配的时候,然后我们在并标签中设置的auto well这个属性,然后它是不是有两种方式,By type和by name,那我们在这个地方,咱们用了注解之后,我们并没有设置它的策略,也就是BY或by name,那它到底是通过by type来实现的,还是通过by name来实现的呢?好,下面咱们就主要来分析一下这个问题啊。
我来说两句