00:01
我们来看一下在spring里边如何进行B的配置。这一节的内容呢,比较多。嗯,主要包含以下这些内容,我们先来说第一小节,叫LC和Di,看一下到底什么是LC,什么是Di。LC。反转控制。什么是反转控制呢?即反转资源获取的方向。传统的资源查找方式是主件向容器发请求,然后容器把那个资源返回给主件,然后主件使用就可以了,而用了LC以后呢?容器主动的把那个资源推送给。需要的组件。把这个资源直接给你了,就说我以前比方说我需要买菜,我需要这个去市场买,现在的话呢,你只需要在这个你的这个院子里边放一个小筐这个菜啊,就会自动的给到你。
01:10
那反转资源获取的方向?有了LC以后,容器主动的将资源推送给他所管理的主键,主键需要做的是以一种合适的方式来接受资源,这个也称之为查找的被动形式啊,以一个合适的方式啊,比方说我在我的院子里边的话,放一个小筐,直接把我需要的这个菜放在筐里边就。就可以了,这个时候这个容器的话呢,我们可以认为是政府。就是我以前我需要什么资源的话,我得跟政府要,哎,这个这个政府我需要。这一斤白菜,然后政府把这个白菜。打给你。现在反过来了。我需要白菜的话呢,我不需要跟政府要了,是吧,我只需要在我的这个院子里边放一个装白菜的小筐啊,政府看到,哎,你需要白菜,OK,白菜给你了。
02:06
反转资源获取的方向。Di角。依赖注入。这个实际上是LC的另外一种表述方式,所以说呢,这个Di跟LC实际上说的是。一回事。依赖注入,依赖谁注入啊,依赖容器把那个资源注入给我,依赖注入。我们再通过一个实例来进行说明。我们有这样的一个需求。啊,有一个类A。有一个类B,其中B呢有一个对A的一个引用,就是说它有一个程序变量啊,是A这个类型,同时提供了一个S方法,UI图就是这样。需求要求从容器里边获取B对象,并使B对象的A属性指向呃容器里边A对象这个引用。
03:03
啥意思嘞,容器里边有两个,一个是B,一个是A啊,我要求这个B对象的这个A属性就是这个A。那我这个步骤的话呢,先从容器里边获取A,先从容器里获取B,再建立关联关系,这个是传统的方式。啊,我们来看一下用LC容器怎么搞,用LC容器的话呢,还是在容器里边有一个A,有一个B,但是的话,我们注意到B跟A之间要求建立这样的一个关联关系,那容器就自动的。把这个关联关系给我们建立好了,他把A对象这个引用直接给到了。B对象的这个,呃。A的这个程序变量通过什么给的呀?那在我们这个里边的话呢,是通过这个set方法给的。这就是IOC容器,我在获取的时候,我只需要获取这个B对象就可以了,啊,不需要再获取A对象,再获取这个,呃,再进行这样的一个关系的设置。
04:10
LC容器就是这样的一个效果。啊,OK,继续下面的话呢,我们来说一下这个LC的前生。啊,分为这样的三个三个层次哈,第一个叫分离接口与实现。第二个叫工厂设计模式。第三个叫。啊,反转控制就是用LC。外卖请看第一个。我们呢,有这样的一个需求。这个需求说呀,我有一个接口叫report,叫报表生成器,这个报表呢,会生成两种方式,一种是HTML方式,一种是PDL方式,现在的话呢,我有一个这个报表服务类,需要用到这个报表生成器。
05:01
有可能用的是PDF的方式,也有可能用的是HTML的方式,看到了吧。那这个时候怎么样?这个时候最合用的方式就是我从这个思维字啊,我有可能需要画出三条线来,我既需要知道这个接口类型,也需要知道你某你具体有哪些,呃,实现类,而且我可能还需要知道我如何去创建这个实现类的对象,那这种是耦合度最高的一种方式。就是说我在这个service里边,我需要知道这个接口,以及这个接口每个实现类的细节。举一个例子哈。就像我们说在这个远古时代,在这个原始时代,哎,原始人的话呢,需要一把斧子,他不但要知道这个斧子的形状,他还需要会手工的打一把斧子。这个要求是很高。细化一点。到了这个封建社会,我这需要一把斧子,怎么样,我可以去这个铁匠铺,我给他银子是吧?哎,你给我做一把斧子。
06:07
这个时候这个耦合度就降低了,我service长只需要画出两条线,一条线就是我肯定需要知道这个接口类型,同时的话呢,我指向这个工厂就可以了,这个工厂负责帮我生成这个接口的实现类,这个时候的话呢,我站在service这个角度是吧,哎,我用起来就更舒服一点,但这个代码整个比前复杂了。这个分工怎么样,更加明确了是吧,更有利于我们的这个呃扩展,而且这个项目的话呢,更加的灵活。到了这个封建社会。好,这边我们到了共产主义社会。在主义社会的话呢,我们在学习的时候啊,老师给我们提过一个词叫按需分配,我需要什么东西,这个政府的话呢,这个就会把我需要的这个材料直接给我。
07:01
那这就是我们希望的一个终极的方式。呃,我还是service需要用到这个。这怎么办呢?哎,我只需要画出一条线。看到了吧,然后的话呢,由这个容器把我需要的这个。嗯,真的,瑞特的这个实心类直接注入给我就可以了,我还是需要一把斧子,我直接在这个我院子里边放一个斧子,一个这个。一个小框,政府就直接把这个斧子给我了,嗯,Loc反转资源的控制方向。站在这个service的角度的话呢,这种方式用的是最爽的,我们讲的也是这个LC容器的方式,它将颠覆我们以前。主件的这个配置方式,以前比方说我们在service里边搞一个DAO,要么是new之类的,要么就是用工厂模式来进行获取的,现在的话呢,要改成依赖注入了。
我来说两句