00:00
好,那我们刚才呢,咱们是这个讲了依赖注入的两种方式之一,叫做set注入,然后下面的呢,我们来看一下咱们的构造器注入啊,构造器注入呢,其实就是通过构造器有参构造来为当前的成员变量赋值,那其实大家想想,在一个类中,我们要想为成员变量赋值的话,其实咱们也就这两种方式,要么呢,我们通过set方法,要么咱们通过有参构造,好那所以呢,下面咱们就可以在IOC容器中再来配置一个B啊,比如说这个B,它的ID咱们叫做student student three,它的class呢,咱们还是student类型,OK。那下面咱们该如何通过构造器扶持呢?大家注意,在这咱们所使用的标签叫做constructor-art。Constructor-art,好,然后这里面呢,那我们就可以通过大家注意这个name来设置我们当前的参数名,大家注意这个时候就不是属性名了,因为它对应的是一个有参构造,所以说咱们这里面的name来设置的就是咱们的参数名,OK吧,好,当然呢,我们如果这里面只有一个有参构造的话,那我们完全可以怎么样啊,直接来为我们的参数按顺序去赋值就。
01:19
去赋值就行,比如说在这直接写个value。1002,然后复制复制大家看你看直接它就不报错了,对不对,因为刚才如果咱们只写一个的话,那他在这去匹配的是谁?只有一个有参构造,只有一个参数的有参构造OK吧,好,下面咱们再来看这是李四,然后年龄24,然后性别咱们给他设置一个女,OK。行,这样就可以啊,那下面呢,我们在这咱们就可以直接获取这个B,然后来把它输出一下,然后看里面的各个属性的值啊好呃,那我们在这个地方,咱们在获取病的时候,我还是要再给大家说一次啊,我们以后获取病的时候,我们常用的方式就是根据类型来获取。
02:08
因为我们同一个类型的病呢,咱们不需要在配置文件中去配置多次,但是我们现在咱们是做测试,所以说我们的一个类型的病呢,咱们在配置文件里面是不是配置了好几个,每一个病咱们都是测试的一个功能,知道吧,所以说呀,以后我们基本上都是根据类型来获取的,但是呢,我们现在因为一个类型的病咱们配置了多个,那所以咱们在这用ID和类型获取的话,可能会比较方便一些。知道吧,但是大家注意,我们现在测试的跟我们以后咱们真正去使用的可能是不太一样的,以后咱们用用的最多的就是根据类型获取啊好。那咱们在这儿是不是直接把它改成是th re three就行,然后我们在这咱们再来一个测试,大家来看一下这个效果啊。好,大家看有没有问题,1002李四24还有女,哎,没有任何问题啊。
03:04
好,那比如说我现在呢,我有这样的一个疑问,比如说我在这再设置一个属性成员变量,叫做private double类型的什么呢?叫做score空。什么意思,分数的意思对吧,然后我们是不是可以来给它设置它所对应的get跟set方法。好,然后再来重写我们当前的托病方法。好,那设置完成之后啊,然后我们再回到我们当前的有参构造,大家注意,你看这是一个有参构造,那我现在我要干嘛呢?我要把这个胎呀,咱们往后放,大家注意,我要把它给放在这个位置。好,然后那我们现在呢,咱们在这再设置一个有参构造,这个有参构造也是有四个参数,然后最后一个参数是什么?看好是double类型的score。能看懂吧,好,然后呢,所以在这咱们是不是应该就要写this.score然后等于score就可以啊。
04:07
好,那我们把它设置完成之后,那大家想啊,现在问题是什么,我现在我的这个配置方式是不是匹配的是有四个参数的,有参构造,那我当前我的这两个方法,这两个构造器是不是都有四个参数呀,而且我最后的这个啊,咱们把这两个也要换,也要换一下的啊,大家注意你看这个第一个是不是对应的sid,第二个对应这个s name,第三个女对应的是金的性别,对吧?然后咱们最后这个24,大家说我是不是既能够匹配到这一个参数,我也能够匹配到这个参数,因为24 24是整形。所以说24是不是可以给in t类型的A级来复持,也可以给我们当前咱们的double类型的score来复持。那所以他在这匹配到的有参构造,到底是这个有参构造,还是这个有参构造呢?下面我们在这咱们来测试一下啊好,我们现在来一个执行,大家看一下啊,最终输出的这个内容。
05:09
大家会发现这个24匹配到谁呢?是不是匹配到咱们当前这个分数了,也就是匹配到我们当前的这个构造期了。能看懂吧,好,那比如说我现在输出的输入的这个24,我来为当前参数赋值的这个24,我就要匹配这个有参构造,因为24嘛,它对应的是年龄,那这个时候我们应该怎么办?大家注意我们现在出现的问题啊,是我们现在来写了四个constructor-arg标签,所以它匹配到了有四个参数的有参构造,而我们当前的这两个有参构造,它都是四个参数,那所以呢,它两个都能匹配的上,而我们最终呢,咱们最后一个为最后一个参数设置的值是24,而这个24既可以给咱们的in tIgEr类型的年龄赋值,也可以给double类型的score赋值。
06:03
那它默认是不是应该是匹配到了这个有层构造啊,那如果我现在我想让他匹配到这个有层构造,也就是说我们当前的24要给这个in t类型的A来复制,这个时候怎么办呢?大家注意你看啊,咱们的constructor里面呢,其实是有一些属性的type,设置当前参数的类型。Ref的话,咱们一会儿再说,因为这是引用的意思,咱们专门是来给咱们的这个类类型的属性进行扶持的,也就是对象进行扶持的,然后这个name表示的是咱们的参数名,Index来表示的是索引,那比如说我现在我来指定一下我这个24,它就是给谁来扶持的,给年龄,给这个A级来扶持的,这个大家能看懂吧,好,然后这个时候我们在这咱们再来一个执行,大家会发现,哎,这个时候这个24是不是匹配到的就是这个年龄。这个成员变量能看懂吧,好啊。
07:02
行,所以说大家注意,如果有的时候咱们出现的这个问题的话,我们也是可以通过其中的一些属性,然后来匹配我们当前所指定的一个有参构造的啊,行,这是我们当前依赖注入的第二种方式,叫做构造器注入,当然咱们的依赖注入呢,不止这两种方式,那咱们以后用的比较多的,大家注意就是这两种方式啊,其他的方式咱们就不说了。好,然后用的最多的呢,然后就是我们的这个set注入啊,就是用的咱们的set注入,就比如说我们以后在进行SSM整合的过程中。咱们的spring的配置文件里面啊,这个property这个标签用的还是要比咱们的constructor arg这个标签用的多的啊,OK,行,那我们当前依赖注入的两种方式,咱们就说完了,好,那下面呢,那我们要讲一下,对于我们当前的一些比较特殊的,比较特殊的一些属性,我们该如何进行扶持呢?
08:03
好,比如说我们要来复制一个难,比如说我们要来赋值的这个内容里面有这个特殊字符,或者说我们当前咱们的这一个属性,它是一个什么类型,它是一个类类型或者接口类型,那这个时候我们该怎么复制或者说这个属性呢?它是一个数组,或者说是一个类似的集合,Map集合,我们又该如何来扶持呢?哎,咱们下面呢,主要来考虑这个问题啊。
我来说两句