00:00
好,来,我们接着往后讲,那么现在我们把这个问题解决了以后呢?啊,接下来我们还得再来研究一个问题,啥问题呢?就是我们辛辛苦苦把他们分开了,那我们就得想一下,分开以后他们两个之间还能不能进行一个访问,啥意思呢?你来听我分析一下哈,呃,现在的话呢,在我的spring mvc这个容器中有一个handle德了吧,对吧?在我的这个容器中是不是有我的service以及这个DAO吧?那么将来他们之间的关系是什么呀?Service要调用DAO,也就意味着DAO要往service里面注入吧,这是在同一个容器中的,我是没有任何问题,肯定是能注入进去的,而handle中是要去调用service,也就意味着我要把service是不是给它注入到我的这个handle中啊,那么这个是跨容器的,明白吧,所以说我们就来研究能不能。
01:01
给它注入进去啊啊,那么这个我们直接从结果上面来看,那我就在handle里面呢,去写上一个方法啊,比如说public字符串类型的啊,我们也叫做什么啊hello吧。能看到吧,好,那么一会呢,我就发送一个请求过来,好,发送一个请求过来,而这个里面的话呢,我就希望去调用什么呀,我就需要用到我的service了,你看看啊,User service,好,User service,然后呢,它是不是通过一个auto表往里面装配啊,实在我们问题就是它能不能被装配进来啊,好,能不能被装配进来,那我们就看假设我的user service里面呢,有一个方法也叫做hello吧,好吧,都叫做hello,一直往后掉就行吗?明白吗?那么来到我这个user service里面呢,我再去给它加上一个什么方法啊,哎,Hello方法,然后呢,这个里面的话呢,我们希望用到的是一个USER3什么呀,DAO啊user DAO,然后呢,这个我们也是通过一个auto v进行注解,把它装配进来,看到了吧,装备进来以后呢,我们在这个地方,我就。
02:15
可以去调用什么呢?User DAO,比如它里面呢,也叫hello吧,是吧,主要是演示这个流程的啊,然后呢,来到这个DAO中,DAO里面的话呢。哈喽。不一样,咋还钓不上了呢?啊,这个没有返回值那是吧,啊一会再来写哈,来这个里面的话,我们就要去写上一个方法。好,也叫hello吧,无所谓了啊,然后呢,这里面你就不用再去调了,你就直接说出一句话啊,比如说就是我们的user d,然后呢,它里面的这个hello看到了吧,好,然后呢,最后回到这一行,那么当我这个调动成功以后的话呢,我最后让你选成一个success去往我们的success页面上就行了,好,那现在我只需要把这个请求给它发送过来,如果说你能在控制台中输出我的这样一句话,那么说明我们整个流程是通的啦,整个流程能通,那也就意味着我的handle登的里面是能被什么能把这个service注入进来的,然后呢,DA呢,也能注入到我的service里面的,是不是这个意思啊?好,来,我们就来看一下啊,来把这个呢完整的再去跑一次,好找到我们的页面。
03:37
啊来,我记得这个是就是一个hello请求啊,是不是我们之前写过的这个超链接,它就是一个hello请求是吧?啊啊,我们就来点一下它吧,走一下,哎,首先你看我们来到成功页面,并且这个地方你看是不是打的出来吧,那么好像我们提出的这个问题是可以的,对不对啊好,那么其实呢,这个话题呢,我主要是想跟大家讲什么呢?哎,就是讲一下这两个容器啊,这是我们的MVC的容器,这是我们的LC的容器,它们之间的一个关系,明白吧,这里面有一个handler,这里面有个DAO,有一个什么呀,Service啊,然后呢,DAO往service里面注入是没有任何问题的,然后呢,Service注入到这个handle也是没有任何问题的,这个它本身就是可以的。
04:30
啊,但是呢,现在我要告诉大家,Service注入到DA里面,是谁在访问谁啊。是他访问他呢,还是他访问他呀,是MVC要访问到我LC容器里面的这个组件吧,对不对,OK,大家注意了啊,其实这两个容器呢,它们有一个关系,什么关系呢?这是一个子容器,这是一个负容器。明白吧,哎,Spring mvc的容器叫做子容器,而LC容器呢,叫做负容器,而且呢,子容器可以访问到负容器里面的内容,但是呢,负容器是不能访问子容器里面的内容的。
05:10
明白这个意思吧,哎,这就是人家容器里面规定好了的,大家把这个结论记住就行了,那么看一下现在我们这个子容器去访问你负容器里面service是不是可以的呀,但是你反过来你来看一下,我让负容器里面去访问它,它是不行的,而且你也没有这个需求啊,对吧?如果说你要让这个负容器去访问子容器,那就相当于你想把这个handle特去注入到DAO,或者是什么注入到service里面吧,是不是,那这就什么意思呢?那你你你把这个东西注到这里面有用吗?你干啥用吗?你从这个方法的这个调用这个流程上面来看,你调过这个service调用handle的吗?你见过这个DA调过handle德的吗?没有吧,所以从这个软件的这个啊流程这个角度来讲,它也是不行的,所以说呢,最终我们要记住的就是现在我们讲的这两个容器,对吧,他们两个其实是一个什么父子关系啊,Spring mvc它是一个子容器,而这个spo呢,它是一个父容器,那么子容器呢,它是能访问到我负容器里面的内容的,而负容器它是不能访问子容器的内容的。
06:22
听明白了吗?把这个结论大家一定要把它记住好,这是我们容器与容器之间的一个关系,明白了吗?OK,那么这个关系知道了以后呢,我们再来,最后呢,带着大家去看一下我们一直说的这个po mvc,这个容器到底是一个什么类型的啊,这个东西怎么看呢?啊,W,还用我带着你去看吗?用看吗?想看的话也行嘛,你看谁呀,你看这个东西就行了吗?嗯,什么时候创建support的容器来着,是不是在我们的这个监听器里面创建呀,对吧,那你就去找谁呀,找这个con Li,找他这里面我们在初始化的时候,在这个方法里面,这个就是我们最终绑定到这个solid content里面的,它是不是就是我们的容器对象,对吧?这就是我们的LC容器对象。
07:16
能明白这个意思吗?哎,这就是LC容器对象啊呃,你可以加个断点,我们来试一下啊,加上断点,加上断点以后呢,我们迪B把它启动服务器啊,来先把它停掉。来第八个启动。好,进入到这里来,是不是提到这了,来提到这以后,我们迅速来看一下啊,这个是什么类型的。什么类型的叫做X ma web applications,那么大家来想一下,我之前在讲这个port的时候,我们说这个LC容器整个结构的时候,我们说过最底层是一个b factor吧,下面是一个application contact吧,再下面是一个comp application contact吧,再下面就是我们的class pass或者是file system了嘛,对吧?除了这几个之外,我是不是还提到了一个叫做web应用下面的一个容器对象叫做b application contact呀,对吧?具体类型的话就是一个xm web application contact就是这个类型的。
08:25
听明白了吗?这就是我们的point的什么LC容器对象理解了吧?OK,就是它啊啊,因为我这个启动的时候停的时间太长了,所以它报错了啊来这个我们就把它点去掉,那你说我的IC容器我在哪看啊?啊,我告诉你哈,我们来找一个地方,找谁呢?我去找那个dispat。啊,我来找这个solid,找到它以后在这里面我们看谁呢,加个源码哈,就是加个外MVC。
09:06
来加上我们的web mvc这个源码啊,好,最后再加一次,这个我刚才是不是加过呀,怎么没了呢。好外BMVC我们来找到它啊,把这个原码加进来,加进来以后呢,注意哈,在这个dispa so里面呢,有这么一个方法,其实我们今天带着你看过啊,可能大家已经忘了,是不是有一个音译的方法呀,讲那个上传的时候给大家看过吗?我们说上传的那个组件,那个ID的配置的时候是不是想过呀,对吧,是不是有这个阴译的方法呀,而这个in的方法的时候,你看是不是就给我传进来一个容器对象啊,对吧?那这个容器对象你想想这不就是我们的这个springc的容器吗?因为这个底solid本身就是什么POC里面的组件嘛,对吧?好,那我就来在这个位置给你加个断点。加上大点,加上大点以后呢,我们就来看一下这个contact到底是谁吗?对不对,这样是不是能看到我这个MVC的东西了吧?啊其实你一看啊,你发现他们两个是一样的。
10:12
为什么一样的呀?啊。为什么一样的呀?父子关系吗?能不一样吗?对吧,啊,等一下啊,来听到这,听到这以后,你来看这个,你看是什么东西是不是。对不对,一样的,听懂了吧,一样的啊,所以说呢啊,这就是我们的一个spoon mvc的一个容器,所以说呢,它这个类型呢,跟你那个poon的那个容器的类型是一模一样的,都叫做什么xm web application contact,明白了吧,只不过呢,它是一个子容器,而那个spring它是一个负容器啊最后呢,把这点东西呢给大家去啊说一下就是有些同学如果想看的话呢,你可以啊,诶到这个地方来去看一看啊啊把这个停掉,OK,请回来啊好,那这就是我们啊最后给大家去讲的一个容器与容器之间的一个关系啊。
我来说两句