00:00
好,然后我们下边咱们继续。继续来来来走走走这个源码哈,我们上午咱们走到了。哪里还看一眼?我们上午是走了一条线哈。从这开始。找到LC容器,但是里边没有这个B啊,就是这个我们抛异常的这个线,就是这个线,那如果说我们要走别的线呢。我看一下啊,找不到。嗯,要走别的线,我们得把现在这个代码得改一下。但是一改的话呢,我估计一改,然后可能大家又凌乱了。这个所以别的咱们就不再那啥,咱们简单的说一下哈,你比如说这哈,呃,这找不到放弃,其实这个咱们看到过了,就是说在这儿它会有一个判断。嗯,看这个里边啊。
01:02
他这儿找不到,会有一个判断哈。呃,他如果是闹这个条件不满足,他就不去做这个in了,他找B呢,是在这个in里边去做的这个找B这个事儿,那那这个他要是他他为闹就不判断了。呃。不是他要为闹他就不找了,就放弃了,然后啥时候再找呢。到这个do filter的时候。这是处理请求的,走这个方法。然后呢,他去他会去判断这个地方,这儿有没有东西。啊,不过我们这个吧,因为它启动的时候已经抛异常了。哎,所以说呢,其实你这边在访问的话呢。也可以试一下啊。啊,他已经404了。就是说这个tomcat认为这个应用没有成功的启动起来,这个应用呢,已经废了。啊,他们开始说这是一个费的应用啊,这个应用呢,你访问这个应用里边的任何的资源,我就都不去处理了,反正我就都认为是是没用的资源,就404了。
02:07
哎,所以说这儿就没没办法让他程序真正往这儿走哈,但是我们说在这儿他会去判断一下。这个东西,呃,Delegate to use,就是我们in delegate要初始化的那东西,如果那个地方没有初始化,它这个池呢,现在它就会是道会是闹呢,它就会重新去做初始化,去找LC容器,你看这找LC容器再去做初始化的这个操作。所以说呢,他这个是诶双保险啊,这个filter呢,他考虑这个事儿,他考虑是双保险,因为他应该也意识到了。我作为filter,我前面有那个context listener。他比我靠前。Dispatch,他比我靠后。那我要是我光顾前也不行,我光顾后也不行啊,所以说我前面呢,我初始化的时候考虑尝试从这里边找,哎,然后呢,我这个。
03:05
A。这个这个如果没有他的话,在我初始化完了第一次请求的时候,到这里边找,哎,因为我在他俩中间,哎,他考虑到这个因素了啊,所以说第一次请求的时候,它还会重新去去找一下,你看这如果LC容器如果是空的,这就抛一个异常说no web application放的。哎,后边说no context load listener or Dis despite so registered,说你是不是这两个东西都没配呀?哎,他在这儿,他在这问你哈,这个LC容器为空。就相当于是我们在这儿哈,第一次请求的时候找LC容器,要找不到的话就抛这个异常。哎,要是能找到的话呢。能找到的话,为什么说这个时候找的还是spring的LC容器。
04:00
啊,我们到这里边看哈。哎,他其实这里边走的还是他。就过来这儿还是一样的啊。呃,关键就是说呢,在这里边儿,它会用到一个属性。啊,就到这儿,他用的还是这个属性,就还是这个root,还是找的是跟级别的。如果我们有两个LC容器的话,还是context load listener,它是一个根级别的啊,找的就还是他啊,这个时候就是说,所以说呢,这个情况就是还是找他,哎还是到这里边找,找不到就抛异常能找到,找到的也是一个废的。这就是我们说分析了一下啊,这现有的这个情况。啊,现在的这个情况就是这样一个,呃,这样一个操作的工作的一个流程。哎,所以说下一步呢,根据这个我们想一想啊,如何去打破这个僵局。
我来说两句