00:00
下边呢,我们来说一个细节。我们在配这个的时候啊说过。在里边配置这个filter,这个ID必须要跟。Web文件里边配这个delegating filter,这个filter name一致。必须一致,如果不一致的话会怎么样?我们于是呢,我们把这个ID给它改一下,改成一个二。好了,我把这个应用给它刨起来,我们看。实际上怎么了?债。这个服务被加载的时候就已经抛异常了,还有什么异常呢?会跑这么一个异常。异常说什么?在spring的上下文里边,没有这个bin被定义。他会上spring上下文里边去找这个什么,去找这个c filter,这个c filter实际上是什么,实际上是我们在外B文件里边配的这个。Delegating proxy的这个future看到了吧,所以说要求他们必须一致。
01:03
好了,我来补一条注释说,若不一致。则会抛出这个异常。因为。会来IOC容器中。查找和。Filter name。名字对应的。Future bit。为什么会这样呢?这个秘密就在这个delegating future proxy里面。点开,我们来看一下它的源代码。大家注意到这个包是spring的web包,看到了吧?于是我去关联spring的配置文件。
02:06
找一盘。Java open source。Spring4.0。Lips找到spring的web。这个是。点开好了,我们来看一下它的这个注释,他说呀。这是一个。Filter的一个代理对象。他去找谁呢?他去IOC容器里边。Spring LC容器里边去找实现filter接口的那个bin。它支持使用target b作为初始化参数,就是说我可以通过这个filter name去找那个B,我也可以通过。Target b name这个初始化参数,去找那个B。好了,那我们需要在web web文件里边配置这样的一个,呃,Delegating filter proxy这样的一个B,他去找谁呢?他实际上去找的是跟filter name所对应的那个。
03:13
BLC容器里边,OK,我们于是我们来看一下这个异常出在了什么地方。我们往前翻,找到delegating filter proxy的324行,我再加上一个断点。重新启动一下走。过来我们看。这一步哈,LC容器里边去找他。Be name,我们看days,找到target name。是不是去找那个bin,如果那个B没有的话,他可不是会抛一个异常吗。
04:01
停掉。我们来看看这个cargate是谁点开。Target name,我们去找这个size方法看见了吧。说他将。为这个target name进行赋值。默认值是谁啊?By default默认值是filter一个值。就是filter name,我们这块配置了这个名字看到了吧,诶这就是这个叫delegating proxy,于是的话呢,这块我们可以在。说一点小细节,说呀,Dex实际上是的一个代理。一个代理对象,然后呢。默认情况下。
05:01
会到IOC容器中查找和filter name。对应的那个。对应的。Filter b也可以。通过,那叫什么来着,叫target吧,往前翻。在这儿。初始化参数来配置。ID的名字。的初始化参数来配置。Filter的ID,我们来大致的看看效果。In para。Car name。我随便写个ABC,我把地名改一下。
06:01
改成。ABC看一下效果。走起。这个时候应该是没有异常的,对吧。没有异常,这个项目呢,可以正常的。跑起来。没错。好的,但是我这个配置要是不加的话,它就会有问题。这个我给它去掉。仅是一个测试哈,谁闲着没事给它配上那个ABC呢,是吧,这个时候就会有错误,因为这个错误我们刚才我们已经看到了,我把这个的话呢,再改成C。六道OK。这就是我们这块,我们讲的这个什么叫delegating filter proxy,我们解释了为什么我们在配这个c filter的时候,这个ID必须跟delegating proy这个future name一致。
我来说两句