00:00
好,那么这一节课呢,我们就尝试一下我们上节课看到的这几个事件监听机制,我们呢,就把这几个组件呢,我都来创建出来,好,我们将所有的这些监听器呢,我都放在我们这个listener下,当然有些呢,人家叫初始化器,我都统一放在这儿,好,那么我们放在第一个呢,我们来实现我们这个applicationest initial。首先呢,我们来看它,它呢是一个接口,我们来为它写一个实现类,我们就叫呢,Hello applicationest initial,然后呢,我们就来实现application contest initialize,而这个实现的时候呢,这会带一个泛型,我们可以C加H,这些initial呢也已经写了非常多的,哎,每一个呢,比如这有示例,他来监听applicationest,哎是来监听它的,我们呢也来监听application,也就说我们的C容器,哎来监听我们IC容器的启动,那在这来写上con。
01:09
Application来添加未实现的方法,那么这呢会有一个初始化方法,然后它一运行呢,我们就来把它打印一下,那么这个application initial LA的我们这个initial方法运行了,包括呢,它还给我们传入了IC容器,那也可以把这个IC容器打印一下,们也可以用到IC容器里边的其他组件我可以都来使用,这是我们这个applicationest,那其他的组件呢,我也都一次性创建出来,接下来呢,就是我们这个application wrong listen,哎,我们就叫hello application wrong listen,好,也要实现我们这个。Run。Listen这个接口,哎,这也是一个接口,我们来添加未实现的方法,那么就有这么几个方法,Starting,这就是来,哎,监听我们这个啊,容器的这个开始的,我们来只要study调用了,那在这。
02:14
哎,调一个study。而且它调用时机呢,我们之前源码也都看到了,包括我们这个environment啊,这就是我们这个环境刚准备好了。哎,它的这个环境。刚准备好了,包括呢,他准备好的这个环境信息是什么,我们也可以获取到,而且这个环境里边呢,还能拿到,比如拿到一些系统属性啊等等,这个从这个map里边我们来获取一些些系统属性,比如我们操作系统的名字,哎,我们来获取一下,哎,都可以来获取到。我们来在这儿来打印一下这个O好,包括呢,我们这个contest prepared,这就是呢,我们这个LC容器准备好了,这个我们也来打印一下它的这个机好。
03:05
D这个LC容器呢,也帮我们了来,如果用也是可以用的,那我们就不写了,还有咱们这个叫contest loaded,这个空气环境呢,已经加载完成。哎,加载完成。好,而这个finish的呢,这就是啊,在最最后边的这一步啊,我们整个都已经创建完成,这有一个finish的,那当时的这个源码环节呢,你可以来回顾一下几个都是什么时候的,好来回顾一下application啊,Listener starting,它是呢,在我们IC容器还没创建之前,先调用starting,然后呢,当我们把这些基础环境准备好了以后,调用environment prepared,当我们把这个contest LC容器的这个cont对象来准备好了以后呢,它来调用contest prepared,我们这个contest啊,整个运行完了以后,它来调用contest loaded,哎,我们整个全部加载完了,在最后它会调用这些finished,那么这几个方法我就写在这,包括呢,还有我们说的这两个组件,一个叫呢application啊,Runner和command line runner。
04:26
你都来写一下。统一来做一个测试,Hello runner。哈喽,我们来测老李开身装呢。好,那我们就来实现application runner接口。Application runner接口好添加未实现的方法来,只有一个方法呢,叫若我们。他呢,给我们传入了我们这个啊,命令行参数包装后的这个东西啊,我们直接呢就来打印它什么时候得到调用呢,我们可以来看一下。
05:05
包括呢,我们再来写一个,我们叫。Hello的command line runner,我们来看这几个都是何时调用好来实现command line这个接口来添加未实现的方法,它呢也有一个run方法,只不过这个啊,这个参数呢,它是以string的方式传进来的。好,这个呢。打印一下,看他啥时候调让方法。好,我们这个命令行参数呢,它是用一个可变数组的方式,那我们想打印呢,也都可以来打印一下,点as list,我们把这个二们来都可以打印一下,好,那么我们这几个写好以后呢,我们要让它作用得配置,而有我们来看这两个呢,是需要配置在Meta in spring factor中的,而这两个只需要放在容器中,那么我们把放在容器中的,我就来加一个注解,比如呢,我们就叫component就行了,好,包括呢,我们这个叫application run,我们也加一个component,这两个呢是需要放在容器中的,而我们这个引力收拉跟run listen的,它是需要配置出来的,配置呢,我们就在类路径下,跟人家原来的规则一样,我们建一个Meta info文件夹,这文件夹下呢有一个文件。
06:33
叫点。Factor这个文件里边呢,我们就来配置上这些东西,那怎么配呢?我们可以参考之前他们的这个配置,比如我们来到自动配置包里边,这呢有个spring factor哎,我们看到application contest引力数拉就是这么来配的来,主要呢是这个接口的全类名加上我们的时间类杠代表换行逗,如果有多个用逗号分割啊,我们就来拿上一个复制过来。
07:05
那么其他的配置呢,那就都一样了,而我们的这个类呢,我们来写上。我们的这个application contest English initial,权利名是它来复制过来就行了,还有我们这个spring application wrong listener,我们也把它配置过来好,照着这种配置办法,等于来换个行来写,把我们的全类名啊,那么这个叫application run listen我们来也复制过来放到这好,那么这个呢,就配好了,包括呢,我们要把该加在容器中的,我们也用component,我们加进去好,我们来启动看能不能访问。好,启动的时候呢,我发现有一个报错,这个报错叫no such method这一块我们看到这个大概提示是跟构造器有关,初始化有关,这个初始化的时候呢,说要传application以及va,比如说我们这个spring application run listen呢,在启动的时候呢,有报错,错误的原因是我们没有一个啊,人家规定的有参工作器们可以参照,哎,人家写好的这个event能看到这个event呢,它没有无餐构造器,只有一个有参构造器,传入的是spring application跟strings,跟我们这一块的错误提示也一样,哎,我们需要有一个spring OB跟我们这个spring,好,我们就来写一个咱们这个构造器。
08:36
我们来写一个有参构造器,能接收这俩变量的,我们叫hello spring application run,好,就是它这俩变量呢,那就是能把我们这个亡应用以及我们这个啊命令行参数都给我们传过来,想要保存呢,大家就一保存,我呢这样就设置好了,我就直接来启动看一下我们这些监听器啊,能不能使用呢?诶我们看到。
09:02
这些监听器呢,就全部都按照我们指定的顺序,哎,Initializer先来启动,接下来呢是contest prepared,接下来是我们这个loaded,当然我们在最一开始是我们这个starting,包括我们这个wrong listener,还能获取到我们这个操作系统的名字WINDOWS10也都没问题。哎,这些顺序呢,都是我们之前走原来的顺序就是正常的,特别是呢,这些run listener之类的,我们在后来写自定义start的时候,我们需要在容器启动的时候,我要做一些事,就非常有用,好,这就是我们各种事件鉴定机制。
我来说两句