00:00
啊。那我们刚才做的是一个简单类型的使用数值。Name age。在项目中如果有引用类型怎么办呢?往下来再看引用类型的赋值。那引用类赋值呢?有两个注解可以用,一个叫做qualify,一个叫做resource,这两个都可以用啊,我们来看引用类型的赋值。先来个新包啊,新包是B03。零三里边呢,我们先把子丢呢拷一个过来。我呢,还需要一个模拟引用类型的,叫school。子库呢,在零二中有,我到零二中去考一个就行了,我这个呢就不重写了,没有太多意义,子库拿过来放到零三之中。打开student。那我们现在呢,需要一个引用类型,在这在这块呢,我们要做的是引用类型啊,引用类型我先声明上。
01:01
说明他呢,Provide,然后是一个school school呢,我就叫做school就好了啊。那现在我要给它赋值得怎么办呢?用注解的话,有两个可以选择,我们先讲第一个,第一个呢叫做out where讲它啊。它给影类型完整赋值。注解,叫做auto的。这是不论框架提供的这个注解。它来实现呢?引用类型的赋值,Spring中通过这个注解得引用类型赋值,它使用的是自动注入原理,自动注入原理上午我们是不是讲过自动注入啊。引用类型可以根据规则by type name进行赋值啊,它支持支持我们的by name呀,还有by tab它都支持的,用的是自动住的原理。
02:13
那这个out wear他用的是哪种呢?这个out wear它呢,使用的是应该怎么说,它默认使用的是by type自动注入。I type自动读入,叫它默认规则。啊,这个注解怎么去用它呢。这个注解呢,它的使用很简单。它的使用位置就是在你属性定义的上面,无需无需set方法,那推荐使用,这是第一种位置啊,在使用之上,第二种方式,那就是在这个set方法的上面,在在的方法的上面两种都行。
03:07
那我主要用的第一种方式,在使用之上,用这个注解就行了。那我现在就在这个school的上面去加这个注解吧,Outwa。这个注解呢,它是来自于来自于spring框架看导入的包。这呢,Outwa来自于框架,提供的是引用类型的自动注入,它用的规则呢是叫做by type。按类型注入,那如果是按类型注入的话。那是不是得从spring容器中找一个和这个固同源的对象啊?是得找一个同源的对象啊。同圆的得找一个吧?那我们当前在零三这个包里边儿,有没有死故这个类型对象呢?
04:04
现在答案是没是无,没有没有啊,为什么没有?因为在配置文件中没有声明死故对象,然后这个死固我们用注解是不是也没有声明吧?那现在如果你想需要一个school对象,那你需要在这个school的类上面去加上一个component,那名字我们可以起一个我叫my school。这两个简单类型赋值要用的是IV,那这个名字,比如说北京大学下面的地址在北京的海淀区。这个是在北京的海淀区,好,这样的话呢,对象就创建属性交赋值了。好,那这块还有一个什么呢,你看小波浪线,他说这块呢,这个赋值呢,应该有点问题。
05:01
我们需要把配置文件这去改一下,这块应该是个零三好扫描零三,那我们看这一块呢。这暂时呢,还是有点问题啊,我们不用管它这块呢,就是一个提示啊,一个提示。Out的,我现在呢,是放在了我们属性之上。在单元类中我们看是没有set方法的啊,没有set school的方法没有,那么看它能不能复制成功呢?我们把这个测试类啊,再来一个零三啊,打开零三上面呢,把导入的这个包啊。得改一下,是038中的student啊。现在我们来执行这个测试代码。我们的student。它的to方法得重新写一下,因为我们新增加的一个属性school吗?这样应该能看到它的值了。
06:00
现在测试一下,看看这个值啊,有没有呢。我们看。这块死过赋值成功吧,没问题,他用的是by type的规则,按类型来注入,那就是说。当我们程序中去加载这个文件的时候,读这个文件吗?那读这个文件的话,那它就会去扫描这个包零三扫描它的话,那就应该是这两个类都找到。找到这个之后,那应该创建school吧。俩属相赋值,再扫描到student,那它就按照component。把他出来。几个类型赋值,然后当遇到outwa之后,那它是按类型注入,那就会找一个故这个类型的同源对象,因为刚才用它已经创建故了吗?跟这个是依然型一致的,那所以那这个死故对象就能够付给他了呗,那他就能复制成功了,这就是outwa的一个使。
07:11
完成的是一个按类型的自动注入by type注入进来了,这是自动注入。那我们现在用的是注解方式来创建对象,创建了一个student呢,又创建了一个school。这样在容器中就有这个死固的对象了,我们把这个对象呢,按类型来注入给我们的引用类型,这就是by type自动注入加一个注解就搞定了,就这么简单就完成了一个自动注入赋值操作,就不用你在手工去写一个有赋值行为了,就是outwa的一个使用。放在使用之上,直接使用就可以了,当然也可以放在set放在上面,但一般很少这么用,意义也不大。
08:03
好,这是。Out that by tap这里给大家声明一下啊,声明一下,我们刚才呢用的是注解方式来创建这个school,那除此之外用配置文件能不能出现故啊。应该也可以吧,那现在我把这个注解呢,给它注释了,你把它一注释的话,那这个子固就没有了,就没有串出来了,我现在换种方式,用配置文件给你创建一个。好,那这声明一个B吧,ID,这个我叫做MY学校吧,然后class,这是我的school,零三中的property name,这个是video,清华大学再来rice value在北京好就完事了。
09:02
那如果我这么做的话。在容器中依然是不是有一个学校的对象呢?不管你是用并标签也好,还是注解也好,它们都是能串染对象的,所以你用这个注解方式能串染对象,你用并标签同样的能传对象,那现在在容器中它有的就应该是MY学校,这个对象是清华大学了,那它能复制成功吗?当然能了,没有任何的问题,看结果。我们看清华大学或者成功了没问题,所以说呢,你用注解方式也好啊,还是配置那方案也好,你都能出的对象啊,这块呢,你就不用质疑了,说这两个对象怎么创建,你用B标签没有问题,你要注解也没有任何的问题,只不过就是注解呢更加容易简单一些。
10:00
配置文件呢,它的内容会更多一些,写代码会更多更繁琐一些而已,二者的等价的作用啊。好,这个呢,就给你注释了,我们还是用这个注解方式把这句话打开就行了,好这是。我们刚才用的啊是out,这个注解来自于spring框架,电影类型赋值自动注入,默认用的是by type规则。
我来说两句