00:00
OK,呃,那么我们讲完这个基于注解的方式来配置病,接下来我们研究一个问题啊,什么问题呢?就是呃,现在我在这个地方呢,指定了一个base package,那么机包默认情况下呢,他就会怎么做呀,默认情况下它就会去帮你扫描这个包,以及这个子包下面所有的类码,然后呢,把带有注解的类呢,帮你管理到这个LC容器中,但是呢,现在我希望实现这样的一个效果,什么效果呢?诶,我想指定去管理几个组件,或者说呢,我想把其中的某一些组件呢,不交给LC容器管理。那怎么做呀,怎么做呀,你就不能把所有的都给我管理进去了吧,对吧,所以说这个地方的话,我们还要给大家去讲一下,在这个扫描的时候呢,这里面我们其实可以指定什么呀,指定扫描或者是什么呀,排除扫描,我们还可以这么来去做,怎么做呢?你看哈,这里面有一个contact include filter,还有什么呀,Contact。
01:15
Excde这一个是什么?包含一个是什么排除嘛,对不对,OK,好,那比如说现在注意了啊,啊,我就想要他什么呀,把我的user controltr了这个扫描进来,除了它之外的都不扫描怎么办?那你是不是可以指定一下只包含它呀,对吧?那怎么指定呢?大家注意哈,这个位置我先把它注释掉哈,怎么去指定呢?诶它有一个类型,这个tap里面呢,现在写的是a notation,那么其实我们就可以通过a notation的方式,你来指定一下,你想让它包含带有什么注解的类,那么现在你看user ctrll带的注解是不是这个CTRL呀,对吧?那么你就把整个CTRL这个注解的全类名是不是他呀,能看到吗?能跟上吗?能跟上是吧?来都跟上啊,来把这个全类名呢拷贝一下,放到这个位置,这个意思就是什么呀,我要把带有。
02:15
哦,CTRLL注解的类扫描进来,除了带有CTRL注解类之外的都不管,明白了吗?OK,但是大家注意,现在我们去运行的话呢,你发现好像没啥用,你看啊。这个是进来了,其他的是不是也进来,嗯,对不对,为什么没用呢?那你就要记住了,如果你要用的是include filter,那你必须得在我们的这个配置里面加上一个use filter default filter等于false,就是我不能再使用人家默认的那个过滤了,把它干掉,然后呢,你再去使用include filter,现在你再来做测试,诶你就能看到这个效果了。第一个我们是没问题的,能拿得到的,但是后面的两个你看没有了吧,没有,为什么没得到,因为已经报错了,说什么呀?诶,没有被定义,看到没有。
03:11
看到这个错了吧,啥错呀,就是我在获取这个的时候,我找不着,为什么找不到啊,因为我没进来啊,对吧,他报错了,同样他也会报错,因为我压根就没让你们把它扫进来,所以说你是获取不到。明白了吗?好,这是我们的第一种方式,那么还可以怎么做呢?注意了啊,啊,我把这个注释掉,还可以怎么做呢?就它里面呢,还有一个这个东西你看好了啊,Contact include filter这个位置我们可以不使用a not,而是用一个aignable,这个aignable是指定什么呢?是指定具体的类名,比如说你现在不是仅仅想把这个类给它扫进去吗?那么你就把整个的这个全类名user controller全类名来copy一下,拿到这个位置放进来就行了。注意,只能是asideable的时候,你才能指定全类名,如果是a notation的话,你指定的是注解的名字,这两个是有区别的,别用混了,听懂了吧,好,那么现在写完以后呢,同样也是啊,你必须得配合啊,使用什么default filter等于false啊,必须得配合它来使用,好吧,那把这个写好以后,我们再来做一个测试,好大家来看效果是不是也是只有它啊,后面的这两个你看是不是又是报错的呀。
04:29
看明白了吗?OK,好,都跟上啊,OK,那这是我们指定扫描,好,那比如说呢,我把它去掉了啊,现在我换了,我想排除扫描,什么叫做排除扫描呢?除了user controller之外的我都要扫描。除了他之外的,我都要扫描。那我就可以使用两种方式,第一种方式也是我排除注解嘛,对吧,我排除注解啊,那我可以怎么做呢?你看看哈,我就写一个include exclude filter,这是我们的排除,排除谁呢?只要带有谁啊,带有CTRL来注解的,我就把它什么了排除掉了,但是大家注意,对于这个Q的filter来说,我们就不能再去使用它了,就必须要把它什么了,使用默认值true,人家默认值就是一个true这个东西其实你现在就可以把它去掉了,默认就是一个处能理解吧,但是大家注意了啊,如果你要使用的是指定扫描,那么你一定要使用一个什么呀,哎,我就写到这吧,啊,指定扫描。
05:31
啊啊,必须什么呀,设置啊,必须设置什么,它等于false,如果说排除什么呢?哎,那就是什么呢?必须设置什么呀,就是不用设置啊,使用的什么呀,使用的是什么,它等于true。那么它等于处这个东西的话呢,就是你写不写都是无所谓的,因为它默认值就是一个处,听明白这个意思了吧,OK,好,那把它改成true以后呢,现在你看了哈,我现在是排除掉谁了,排除掉带有CTRL了这个注解的类了,那么我们再来测试的话,大家注意第一个你就拿不到了,直接就报错了,看到没有说什么呀,说这个user ctrl了,没有被定义。
06:12
看明白没有,看到了吧?OK,那假如说你看我把这个我不获取你了,那我获取下面的这两个,能获取到吗?哎,肯定是可以的,因为他们没有被排除掉嘛,你看他们两个service DAO是不是拿到了,看懂了吗?OK,好,那么同样的道理,我也可以怎么做呀,我也可以通过类名来去做一个排除,我还是把它注释掉,我们再来写一个contacts,好,Exclude filter,我这个位置呢,依旧写一个呃,Signable,然后呢,表达式里面写谁啊?就把你的userr controller这个类给它排除掉,能理解吗?OK,那么写成这个样子以后呢,你再来做测试,效果是一样的,现在的话呢,我还是能获取到下面的这两个,你看service do能获取到吧,但是如果我要再获取这个controller的时候,你是绝对获取不到的,因为我已经把它排除掉了,看到没有,第一个是不是会报错了。
07:08
对吧,告诉你用可了没有,被顶理解了吗?OK,这就是我们的指定扫描以及排除扫描啊,那最后的话我都把它注视掉啊,因为我们讲课的话暂时还用不到它,但是呢,我要提前把这个给你说了,以后我们再去用的时候呢,我就直接拿出来去使用了,明白吧,OK。
我来说两句