温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
各位同学大家好,刚才呢,咱们演示了三种方式获取B,分别是根据ID获取,根据类型获取,以及根据ID和类型获取,那下面呢,咱们看一个细节问题,就是当我们根据类型获取B的时候,这里边有一个要求,什么要求呢?要求IC容器指定类型的bin仍有一个,如果说你有多个,它里边会出现问题,那具体怎么样,下面给大家演示一下这个效果,咱们看他该怎么做。首先大家看第一个啊,咱们找到B点叉的的配置文件中,大家看这行配置,这行配置表示我配置一个唯一标识叫user,然后根据这个径会创建对象,那比如现在啊,我把这个我再配置一份,比如咱这么来写。我再配置一个,然后把ID给他改个名字,咱们就叫USER1,大家看我现在是配置了两个优秀对象,他们只是ID属性值不一样,但是他们的类对象都是同样的,都是这个包里边这个类,那在下面我们用类型再来做个操作,咱看它会怎么样啊,找到类型这些,为了区分,咱们把它先注掉,就单纯用类型进行测试。
01:21
因为你看类型是不是得到这个对象类型。现在执行我们看什么效果啊,看看会怎么样。然后大家看啊,这里边是不是就报错了,咱们看他报了什么错,把这错误给各位复制出来,咱们到一个文档中看一下啊,这错误到底该怎么去理解。我把这个错误给大家起到一个TXT文件中,咱们在这个文件中我们来做一个查看。然后大家看啊,这错误很明确啊,他告诉你说没有这个类型的B,哪个类型U类型为什么没有这里写到啊,这里边他期望匹配是一个单实力的B,但是他发现了两个B,一个叫user,一个是不是叫USER1啊,也就是我刚才提到了这句话,咱再读一遍啊。
02:19
就是用类型获取B的时候,要求IOC容器中指定类型B只能有一个,因为它默认是期望是一个单实力匹配的B,但是我现在配置是不是两个一个user一个USER1,所以说我强调啊,如果说咱实际中有这种场景,你配置多个这个B,但是他们都是一个对象,那这个时候啊,注意着我说这对象啊,是他们的一个路径是一样的啊,那这个时候你用类型获取就会出错,如果说你有这种场景,那怎么获取,要么根据ID属性值,要么根据ID使用值加bin来获取。比如说啊这一行我先注掉,咱们把这个再测试一下,我根据ID获取。
03:06
把这个执行,比如现在回到这个UA。大家看这肯定可以,那比如说我改成U1,咱们再知球。你看这里边。这个是不是也可以啊,所以这是我们说的一个细节问题啊,最后重复一遍啊,根据类型获取的时候,要求IOC容器中指定类型的B只能有一个,就是你这个对象啊,你不能创建两次,你创建两次的话,根据类型获取他就不知道该找谁,因为默认他期望是一个单实力品味对象。这是我们说的这个细节问题,如果说你出错咱们也看到了,刚才出的跟那错误类似啊,就是咱们这个叫U,它就出现了这个问题。这个细节问题咱们说到这里。
我来说两句