00:00
上一节课呢,我们看了一下,用an注解给LC容器中加组件,也就是说将这个注解标在我们这个方法上,那么LC容器启动的时候呢,就会调用这个方法,将方法的返回值啊,我们放到LC容器中,方法名会作为咱们这个组件的ID,那么呢,它的这个写法其实就跟我们这个病标签是一样的,然后我们实际在开发的时候,我们的包扫描写的比较多,就是说呢,我们以前写过这个,我们先把这个名生空间倒过来,我们写的是咱们这个叫test component,哎,我能指定来扫描com.at硅谷下的所有组件,那只要来标注了,哎,我们来说一下这个包扫描,这是我们以前用的,要说呢,只要标注了。只要标注了,哎,我们熟悉的第一个controller,或者at service或者atit,哎,或者呢,咱们这个component,只要标注了这四个注解中任何一个的这个组件,那么呢,它们都会被自动的扫描加进容器中,那么我们以前的插面配置是要配这个包扫描,那注解怎么做呢?好,把这个注点那么呢,我们来写上,在man conven里边,好,以前呢,是在配置文件中,是不是写component sc,那好,我们说配置文件相当于就是这个配置类了,那接下来我们就在这个配置类上来写一个,有一个注解叫component,其实是一模一样,把只不过变成了注解表示而已,那么在这个component里边呢,我们。
01:55
可以来指定Y流Y,我们要扫描的包,我来指定com.at硅谷,比如呢,我们来写上几个组件,我们呢来写上好,我写一个C,我们来写一个book CR,那么呢,我们再来写一个book service service,我写一个book service,那我们再来写一个book,丢丢来写一个叫book第一个,好,我们以前是这么三层架构,哎,我们在controller上呢,我来标上一个controller读写,哎,然后呢,在service上,我来推荐来标and service写,还有咱们这个do上,我们来标and。
02:55
哎,我们以前呢,也是这么来用的,只不过以前的包扫描是配在插面配置中,那现在呢,我们配在了这个,哎,咱们这个配置类中,那我们来启动来看一下它,那为了方便呢,我们就在这写上一个测试类,测试类啊目第二。
03:17
硅谷test来,我们来写咱们这LC test来写第一个方法来我们来你一个叫a con a con application conest来指定主配置,咱们这个就叫主配置类的这个位置来指定上,然后呢,这就是我们的LC容器,我们呢就来看一下这个容器中,这个容器中有哪些being get,一个叫being DeFinition names,哎,能看到容器中所有的这个being的定义的名字。
04:10
来把这个打印一下。好,我来输出一下,你看一下容器中有哪些宾呢?那我把这个解unit加到我们这个依中吧,ID解unit artifact ID解unit,以及咱们这个版本4.12SCO。Test啊,作为一个测试范围的,好,我们来在这呢,我来标上test,做一个简单的测试,好打包,我们来看一下容器中有哪些组件走。
05:01
好,能看,那除过咱们这个IC容器中自己要装配的一些这些组件外,那么我们还有这么几个,一个叫我们这个主配置啊文件,这个主配置文件在这,哎,这个主配置文件呢,也是组件,其实呢,点进去大家看conration也是一个也是组件,那么呢,接下来还有这个book controller,哎,Controller呢,我们用controller注解加到了容器中,没问题,Book Du我们用,包括呢,Service,哎,我们用service,哎,那么这些注解呢,配了一个包扫描,Component sky他们呢,就到容中说呢,这是我们包扫的式,另外在这个包扫里我们也能用以像那些我扫描的时候只要哪些啊,我排除哪些,我们点进去看,里边呢有filter以及c filter。
06:01
那么includede呢,就是我扫描的时候,哎只包含哪些,Excclde呢?我扫描的时候呢,要排除哪些,哎,我们可以测试一下,我们说这个component sky这value指定要扫描的包啊扫啊行,那么呢,我们来做一个过滤规则,比如exclude filters,我扫描的时候呢,排除一些,而这个exclude filter呢,它的这个写法是一个这个filter数组,哎,点过来。Exclude filter它呢,必须是这么一个filter数组,而这个filter呢,也就是我们这个filter注解,哎,又是一个filter注解,好,我们点过去,那么呢,它既然是数组,我整一个大括号,要排除哪些呢?我们来写第一个排除规则at filter注解啊,写上,那这个filter注解里边怎么写呢?点进去,这有你要排除的这个规则,是按注解排除还是按类排除,还是正则表达式等等等等,有非常多规则,那么呢,接下来就是你要排除的这些,哎,按照注解,那注解的类型还是按照类那类的类型等等,我们在这指定好,我们就用这个filter,我先来指定我们要排出的规则PI。
07:38
Type,那么呢,Type里边是filter type,咱们这个排除规则,我们呢,这有这么几种,一种是ation,按照注解排除,一种是按照aspect阶表达式,以及我们这个哎,按照类型排除和自定义排除,以及按照正则排除,那我们就用这个a notation演示一下,那么呢,怎么排除呢?那就排除假设呢,我现在除了除过controltrler标注的组件外,剩下我都要相当于我们要排除controller注件标注的组件,那我们把这个controlrler,我们就来写上controller。
08:20
点class,诶,也就是说呢,排除这些东西,那么我们要排除更多,因为这个class它是能写数组的形式,所以说呢,我们可以这么来写,打括号,那么呢,第一个我们要排除的第一个control.class或者呢,我们还要把service也排除掉,Service那就是呢,标了TR注解service注解的组件我们不加进来,那我们再来进行一个测试。那么现在book controller book service我们来看,诶就没有了,就剩book do了,哎,这个呢,就是我们指定排除规则。
09:03
好,比如呢,我把这个留下,我只让它排除CTR了,那现在呢,Service就会再次进来,诶我们看到service进来了,但是CT了没有,这是呢,我们这个excde filter包括呢,我们还有以前还用过一种方式叫de filter,它的意思是只包含什呢,这个X cloud指定扫描的时候按照什么规则排除哪些,那么呢,同样我们可以用这个include filter,这include菲尔特呢,它其实哎我们来点进去也是这个菲尔特数组的菲尔数解数组的,但是呢,它的作用跟上面正好相反,它是用来指定扫描的时候,指需要包含哪些组向就说。
10:04
我只要哪些,那我们来写一个,这个呢是exc includede filter,我们把它呢,现在我来变成include filter,也就是说呢,我只要controller,那么按照道理,IC容器中是不是只能有controller啊,但是我们来测试,大家想着应该都一样,哎,我们以前要配这个只包含,还必须得在我们这个插麦中,在这扫描的时候,大家还记得吗?必须先配上一个叫use defa filters,然后让它禁用掉默认的过滤规则,因为默认的规则就是扫描所有的,只有我们禁用掉默认规则以后呢,哎,它呢,那个只包含才能生效,那同样的,那么这个禁用默认规则在用注解的方式在哪写呢?哎,也一样,在我们这个in克的filter,我这有一个定义了一个过滤,那这个过滤里边呢,哎,这是我们指定的过滤类型,但是我们这个component sc里边有一个叫use def filter,它默认是true的,我们可以把它掉好,要让它剩效,我们再来配置出叫use default filter等于false,哎,这样的话呢,就只会包含controller,哎,我们来测试,哎,没问题,只有ler组件来到了LC容器中,这就是我们这个SC,那么包括这个component,家点去,你看啊,如果用的是GD,我们这还是一个重复解说呢,我们可以把这多写几哎,来指定不同的扫描策略,我把这个component sc我多写两次,哎,都可以,当然如果你不是Java叭。
11:58
也没问题,有一个叫大家看,有一个叫component scs,有指定扫描策略,Component scs它里边呢都是来写component sc,也就说呢,哎,它里边它里边呢,我们的这个value是一个哎数组,这个数组里边呢,我们写的是component啊SC的规则,我说我把它放进这,哎效果是一样的,效果是一样的,这样的话呢,我们就可以用component scs,我们多指定上几个component sc规则,我们来可以看一下,也是生效的,哎,只扫描controltr,所以呢,这就是我们说的这个component sc,自动扫描所有组件。
我来说两句