00:00
好,那这个地方呢,要自定义拦截器的,自定义拦截器呢,其实就实现一个接口就好三的一个接口,然后至于里面要写什么东西,我们自己看。他要我们实现的方法呗,对吧,还是一样的,给它接口,好,那我们来写这个代码,打开我们之前的内容,我们再创建一个模块。接下来啊,这个我们叫杠,我们导入我们所需要的这个依赖,其实导一个依赖就够了,NG这个啊1.9版本对吧。这个还在加载,所以说现在提示有点慢啊,然后然后我们要的是NG,靠核心包1.9版本嘛,我们用1.9就行了,咱们用1.9啊好,那接下来呢,这个我们就不用管了,接下来我们去写我们的拦截器,然后呢,我们建一个类啊,com.I根我点,然后呢拦截器in s。
01:16
呃,里边放一个什么呢?叫这个我们是区分类型用的对吧?我们建名之一,我们叫太保应的财不的可以吧,其实这个名字无所谓对吧,不是说你叫拦截器,你就是拦截器,主要看因为我们实现了那个拦截器的接口,你才能成为拦截器,对吧?你叫什名字其实无所谓啊,然后我刚才说了,看到实现一个拦截器的接口叫in,注意要导包下的啊,这个in的比较多是吧,要一定要用风方向的对吧?好,这里面要实现方法out加回车对吧?嗯,实现方法诶有这么四个方法,那我们看一下啊。第一个初始化,然后还有一个close,这个跟map里边的可那个setup方法一样,这个呢,Cleanup对吧,拦截器,因为我们知道拦截器它是拦截一条一条的事件嘛,然后做一些处理加工对吧?啊,所以呢,它有启动的时候,它会这样说什么,假如说你要开一个什么礼物对吧,在这里边去开,在这里边去给它关掉啊,结束的时候给它关掉好,那么接下来呢,还有这里面还有两个方法,In和一个两个复,这个叫什么,他们俩互为重在对吧,那这个呢,是处理单个事件,这个呢P处理对吧,也就是说我们传输数据的时候,可以一批一批的啊,因为单个太慢了,假如说但是呢,你不能没有单个的,我不能说非得等到100我再传,假如我这一个我过了一个小时了,你还不够传吗?那肯定也要传出去了,对吧,啊它时间啊,那其实这两个方法呢,我们只要写。
02:55
拉一个就行了,因为我们这里边你拦截的时候,处理过程当中是不是还是要一个事件一个事件处理,对吧,还是要一个一个实验,所以呢,到时候我们在这里面调用这个方法就好,对吧?啊是这样的意思,行这个呢是单个你写下啊,这个叫单个时间处理方法,好这个呢是批量事件处理方法,嗯,那这里面呢,传进来even的返回值还是even的。
03:28
合理拦截器嘛,对吧,添加一些什么信息,那进来的even传给你的even的,然后出去的还是even的,所以呢,我们要刚才我们说的,要根据数据当中是否包含爱的硅谷这个字符串来区分,那I硅谷这个字符串是不是在它这个身体信息里边。当然我们说了,Even呢,包含一个hi,一个什么。包对吧,两个内容,所以呢,我们第一步先要去获取它的头信息和包,获取handle的and,包里两个我们是不是都要对吧?因为同信息当中我们要添加东西,而添加东西是根据包里里边是否含艾约谷来决定添加什么。
04:14
对吧,啊是这样东西,所以呢,我们就获取,那就拿着event点,诶这里边有get赛的方法,实际上就是even的这个类型呢,它里边就是有两个属性版,一个叫一个叫包,对吧?所以我们看到get的方法,那我们这个地方get,你看一下它的类型是不是一个麦对吧?K结构好,那我们获取一下它那个包的信息啊,因为呢叠get的包,但是这个包啊不太好用,因为它做了序列化了,直接数组,我们是不是希望应该用字符传更好一点吧,所以呢,我们不这样,我们怎么做呢?我们用一个,所以把它转成什么S型,然后呢,Even的点get body2加V得到我们的包的信息,对吧,我们转成字符串,那么接下来第二步是不是根据。
05:05
这个包里中是否是否包含。I的硅谷字符串添加不同的什么头信息,对吧?那我们就要做判断了,If。包点吧,然后呢,爱硅谷。不包含,我们是不是另外添加信息对吧?前面呢是包含的,那我们添加信息,那就还的他是一个map,那我们可以不的这个地方呢,我们就用tab,我就不用C的,因为我当时说了文档当中写的C的,我们可以干什么可以换对吧?那这个地方呢,我也不写那个所谓的什么CZ那些东西了啊,那我们也随便添加一个。
06:02
啊,随便添加一个,添加什么东西。随便啊,我就添加的给OK吧,好,那接下来这个地方是不是也要添加信息,那这个地方就有讲究了,这个地方K。还能随便写吗?不能,是不是两个K1定要一样啊,因为当时我们看到这配置信息的时候,你看它有什么其他的K吗?一个这个CZ us就Y就可以配了,可以配多个对吧?所以呢,这个地方类型我们放一个这个我们就叫other可以吧,其他啊有包含六五的,有其他的啊,我们就做这个处理,这个无所谓啊,因为这个艾硅谷跟这个阿拉将来是写在哪的,写在这麦后面的。对吧,它就获取这个地方呢,我们将来写tab,它会获取我们头信息当中tab这个key获取到的value去映射many不是映射嘛,对吧,映射哎决定你放到哪一个China对吧?做这个事好之后添加完以后,我们就可以把这个返回now,如果这地方返回钠就相当于是过滤掉了。
07:15
就这条数据你不要了,如果是返回档的话,那这个是返回数据对吧?第三步这个地方我们应该返回什么even,还得把它返回申请啊,还得先先添加上了,好,那接下来呢,我们用它,它就简单了,就变利呗,然后做一个A助理对吧,那进来的是一个例子的,出去还是一个list子,当然这个list子呢,我们可以在里边创建,那在里边还是不好,我们是不是还是可以创立一个全局的对吧?啊里边放的是event啊行,那这边呢,Private啊,它是一个list对吧,List里边放的泛型是event对吧?然后这个呢,我们叫I had。啊,等于又一个什么啊,当然这个地方我可以把new的一个创建过程放在这里边也可以。
08:12
对吧,只要在我们调用intercept或者intercept这个方法之前,能把这个集合给我们创建好就行,对吧?啊,那这样我们这样那就分开呗,这边呢,我们做一个声明,一个集合用于存放。拦截器拦截器拦截器处理后的实件,对吧?假如说我们叫声明,然后初始方呢,我们放在里面啊,那我们可以怎么做啊,爱的等于有一个,诶刚才有一个对吧,这里面呢,是不叫声明了,叫什么初始化,说实话即可,对吧?我们可以这样说,当然你直接在这扭也可以啊,在这扭也可以好那么接下来呢,我们去做一个事情,第一步你想一想应该做什么事,直接上来就便利他嘛。
09:16
是不是先把刚才那个集合给它清空,它是不是一个全局的集合呀,如果不清空,那你两个批次过来的数据是不是都放在一起了,再发的时候是不是第一个批次只发自己的,第二个批次是不是第一个批次又发一遍,对吧?所以上来第一步清空。集合对吧,那就是ADD head.clear好,先清空,然后再干什么便利啊。处理完添加到这里边吧,好,第二个叫便利,所谓的我们的events啊,那就拿着events.for循环啊,这里边一个一个的event,那到单个even,我们是不是可以调用这个一三的方法去处理啊,对吧?好,那我们就可以这样写ADD had events.add然后呢,In the s,把那个events放进去,因为这个内容返回值。
10:14
是不是就是一的,而我们刚才这个集合是不是里边就要添加一对吧,这个最终返回数据对吧?第三步啊,返回数据啊,返回数据返回的是不是就是这个几个对吧?按正常来说,这块我们就已经写完了吧,啊但是呢,还缺一点东西,缺什么东西呢?来我们官方文档当中来看一下啊,在我们配置这个拦截器的时候。在这这块呢,是关于拦截器的一个配方啊,那这边呢,先要声明你用的拦截器I1L2,我们之前说过拦截器是可以组成一个拦截器第对吧啊可以多个拦截器,也就是说可以配多个啊,谁配在前面就先经过谁I1L好,那接下来I1怎么配的看这。
11:11
主要看他就行了,这边放的是一个什么。全类名啊,那我们自定义的东西是不是要打包扔到集群,然后呢,用他的全类名,他自己去找,但是你看这个全类名有一点特殊。这个build的是个什么东西啊,这种写法其实就作为它的一个内部类,静态类,不类这个所谓的build,你看这个名字其实是帮助我们的构建这个蓝截系对项目。啊,构建拦截器都要用的,也就是说现在我们写代码当中啊,这个相信大家肯定不会少,因为肯定你要写拦截器,肯定想到要实现这个拦截器的接口对吧?这里的方法一看也就比较清楚了,但是最容易丢的就最后一个地方,所谓的叫build啊,它呢要继承我们的build啊,而且也要用,注意啊,也要用我们包下的,哎,是接口是吧,那我们要换成实线啊,还是一样的是包下的啊,用它这个地方呢,我们那换成什么实线啊实现好这是进单内部类帮助他规定对象的,我们看一下啊,这里面呢,可以去读取配置文件,对吧,有配置信息可以读取回来,更重要的看这它有一个标的方法,它返归值是一个什么。
12:44
拦截器对吧?好,那我们用一个type in其实帮助我们构建对象的,其实这样写了我们当前这个拦截器的一个构造方法,我们可以把它私有化,都可以。啊,用private都可以啊,因为它在内部呢,它不是说直接去new的,而是通过这个金单内类的方式帮我们去构建的啊,去帮我们就构建的啊,这个类这个东西是经常容易丢掉的,就刚才那个四个方法肯定不容易丢,因为你肯定要想着实现什么CE的接口,它自己给你提示要实现这四个方法吧,要写那肯定不会丢,更容易丢的是这个build的啊,更容易丢的是这个build的,好,这是我们把这个来电器就写。
我来说两句