00:00
我们一起来研究一下这个4.0的新特性,叫泛型依赖注入。首先呢,我们通过这样的一个UML图来说一下什么叫泛型依赖注入,大家往最顶上看哈,有两个鸡肋。分别叫base service。带饭型的。Basey带分型的,那这里边的话呢,会定义一些我们经常使用的方法,比方说save啊,Delete啊,Query啊等等等。呃,Base service跟base report之间呢,有一个引用关系,以便我在base service里边可以去调用base report已经定义好的方法。什么意思嘞?就是说我在base service里边有一个重新变量是base reporty这个类型的,那base service可能会有很多实现类,Base reporty可能会有很多的时现类,那base service有一个实现类,比方说叫user service,那我在进行继承这个父类base service的时候,我需要提供这个泛型T,比方这个泛型T呢叫U点。
01:05
这边一样是吧,Base reporty有很多这个呃词类,比方说有一个叫u reporty,那我在继承的时候的话呢,我也提供了这个泛型类型叫优点,那这个时候他们之间会自动的来建立这个引用关系,这就是所谓的泛型依赖注入。OK,通过代码说一下。首先呢,我们来创,创建一个包。这个包到。点E。创建负类。Eight。PY。泛型地类型的。在创建一个啊。It's。Service。
02:01
All。被行的被子。Reporty发现D类型的。来听。这里边的话呢,我们来写一个方法,比方说public的爱。里边的话呢,我把这个。PY也反映一下。那我这个base service跟poy之间有一个。互联关系,我们用奥尔标志一下。注意到哈,我这个AUTO2的话呢,只标注到这个上面了,而没有加上没有在这个base service跟base report这个上面加注解吧,因为我这样的这个注解的话呢,会被此类继承。告辞类。
03:00
之类。要yoda。Service。我需要搞一个具体的一个类型,比方说优等。这个类型呢?布类呢,叫贝。哦,不是这个。有点。他。Extend。Face。类型。再搞一个。要yoy。被。好的。好的,现在呢,我把这个交给LC容器来管理,加一个注解。
04:07
这个也就给LC容器去管理。艾特到。The。搞一个配置文件。Di X。命名空间忘倒了是吧,在这儿。Context。OK。Contact component scan。看点爱的硅谷一直找到。OK,完啊B方法测试一下。方法。M。Application contact CDS and new class application contact。
05:05
这个名字叫。In。一点。然后呢,我们来获取一个U的。Service。这个里边的是吧,等于CDx.B。名字呢,就叫优。Service。好的,我来调一个user service的方法,行。不过我做艾特的时候的话呢,这块打印这个Y是期。是这个base report子类那个呃优那个子类类型,那这个实现的话呢,就OK了,走一个看一下。大家看到了吧,哎,这就是我们所谓的这个叫。
06:04
呃,泛型依赖注入。再过来看一下这个云代码。大家看哈。我们这个引用关系呢,是在哪建立的呀,是在这个副类里边建立的,在这建立我这块,我实际上这个类型是什么类型啊,是负类这个类是负类这个类型,但是我在此类里边它也会。他也会来建立这个关系,而且真正注入的是我这个T对应的那个子类类型。是吧,就是说我这块这个T不是优吗?他就把呃,Base reporty u的那个子类的对象给我注进来了,这就是我们所谓的泛型依赖注入,这个我们在后边开发的时候的话呢,这个代码会比以前节省好多好多。
我来说两句