00:01
大家有没有勇气看看杨澜?这么这么这么肯定了,我们就认怂了。看看吧,看看源码也不会死人。先因为这个涉及到它的启动的过程,所以说呢,我们得注意把它的他派的启动时间呢,改的长一点啊,45秒是肯定是不够的,然后呢,把它呃找好这个断点哈。呃,就是说我们得先去进入到我们delegating。啊,这个filter呢,像这一类的这种大型的组件啊,因为在这个项目里边,你想它这个东西是起到至关重要的这个作用吧,啊它这种大型组件基本上哈,它都会有初始化的方法,你CTRL调出来这个大纲呢,你就IN1敲。
01:01
呃,不敢说绝对有,但是这个基本上八九不离十。啊,你看这边是in future b。呃,然后呢,在这里边儿呢,你看这个操作呢。这不是find web applications,这不就找LC容器吗?其实在这你看这哈,就是它判断这个不等于no,就进一步去初始化,初始化dedicating呢,就是在这个LC容器里边去找那个。他要的那个病。啊,在在这里边去找那个B,你看这不是,他要是不等于闹才找,他要是等于闹就不找了,就这个事就不干了,他也没有写else,所以说他找不到就放弃了。所以说这个看这啊这个题目我们就知道了。哎,这就是我们在这儿说的。说他为什么说他找不到就放弃了。啊,就是说他他在这儿是。没有else那一支,他没有说else以后他干嘛啊,他在这儿这个等于闹的话就不走了,就不做这个初始化了,不找那个B了。
02:02
哎,呃,那么下边就是我们看看他找这个LC容器是咋找的。这样这打个断点。哎,我们从这进来。其实吧,看源码呢,大家大家这个我们前面也看过很多源码了,每次听这种课大家都会觉得很痛苦,这个痛苦在哪呢?并不在于说其实源码本身不难。啊是事实上来说确实是不难,但是这个关键在于吧,不是你自己控制的。要是你自己控制的,他就就是有你自己的思路,你想看哪你就去看哪,你想在哪停在哪停啊,你想进哪个方法,进哪个方法,你自己去控制,你自己去想啊,去探究,你就能够去整明白,哎,你多走几遍就明白了,但是你上课听课呢,这东西不是你控制的。
03:00
不按你的思路来是吧,你得强行的按照老师的这个思路走。啊,就好比说你腰上拴一根绳,绳上面那边拴着这个火车。是吧?你刚开始能跑两步,一会儿就被按在地上摩擦了是吧?啊,这个这个就这个确实是这样啊,其实难是难在这儿的,所以说其实这个原理性的东西呢,看源码就是你自己去去跑啊,自己去跑都能整明白啊。这时候到这儿找LC容器,咱们进这个方法。进这个方法他现在看看,先看看这个类,这个就是它这个当前类里边看看,哎有没有,现在没有啊,如果不等于闹就进来这一套,现在他等于闹就不进呗。呃,尝试找一个这个这个也这个也也是这个也是一个闹,所以这个就不满足了,所以就就来这儿了,哎,所以你看前面这些东西都不用看。啊,我们看这实质上有效的是这个。从这再进这个方法。
04:02
嗯,这是他要service contact啊,他要获取service contact这个对象。这个不用看退出来。哎,刚才是这个哈,现在我们进他。进来以后呢,他去get web application contact从这是service contact啊这contact从这里边要去找,再进下这个吧。进一下这个啊,就这时候已经呃,到另外一个类里边了啊,这里边这时候已经到了一个web application contacts这个类。到了这个类里边了。啊,到这个类里边的话,我们再点进去诶。呃,为什么说,为什么说他很固执的就要找spring LC容器,大家看这哈。Web application context。它的一个常量。叫root web application context。诶,这个点不过去啊。
05:02
郁闷。呃,你以为这样就难住我了吗?我们去找一下这个常量哈,他在这儿声明了一个常量。CTRLF,我们有5000秒的时间的。啊。你看这个东西是啥哈,Web application context,点点name。点住它。所以说呢,这个你拼起来以后呢。就是这个东西的全类名,加上讲root,关键其实主要看这个root root就是跟级别的那个LC容器。就是我们大家回忆一下啊,咱们说两个LC容器的关系。的LC容器哈。是副容器。MVC这个是子容器啊。这是负容器。这是子容器,负容器呢,是那个根级别的,根级别的指的就是它,所以在这儿呢,它没有去考虑别的因素,它在这儿固定的就是去找这个根级别的这个容器啊。
06:09
嗯,然后这里边儿其实再往下呢,就从这里边儿的get attribute去取。啊,这不是他的get at tribute啊,这不,At name。就是是不是刚才这边拼的这个权利名,加上这个root啊,从这里边去取。现在看看他能取到吗?能取到就根级别的这个LC容器啊,你看最后这句话,他说是在整个上下文的层次结构里边,是一个根的级别,这是上下文的意思,也可以理解为环境,这个hierarchy是层次结构的意思啊,它是根级别,就是spring l形容器,它能找到。嗯。然后这些咱们就。过来过来。那现在找到了这个,找着了这个东西不等于闹,不等于闹就不走,这这边就返回了。
07:03
返回了以后再返回,哎,到这儿这个aw wac。他不为闹,不为闹就要走这个。进这个方法,哎,进进进这里边,进这里边儿呢,它就要去这不LC容器,这不get b吗?就要获取这个b get target name。哎,这个。这个B的名字,Target name。Spring security filter tin,就是我们外边里边配的那个filter的名字。就按这个名字去找,要找这个B。这个这个时候呢,它是找不到D。你看他这出来了哈。它这里边儿找这个肯定是找不到的,这边你看给他赋值赋的是个闹嘛。哎,这边赋值赋的赋的是个闹那。要再往后走吧,这个就这是走到哪儿了哈。
08:00
这不就到开这了,这不就抓到异常了,到找这个病,找不到我们就抛异常了。哎,这就抛这异常了,所以这时候我们走的是哪一条线哈。从这出来,初始化。找LC容器找到了,找到呢,从这里边找这个B,找不到就抛,找不到这B的异常走的是这条线啊。
我来说两句