图1:控制台结果
从上图可以看出,在⽣成代理对象时,是先创建第⼀个插件类的代理对象,再创建第⼆个插件类的代理对象;但是在拦截⽬标⽅法的时候,则是先执⾏第⼆个插件类,再执⾏第⼀个插件类。
因此我们可以得出以下结论:创建动态代理的时候,是按照插件配置的顺序层层创建代理对象的。执⾏⽬标⽅法的时候,按照逆序顺序执⾏。
我们可以将该过程类⽐为如下的模型,⾸先创建的StatementHandler,然后再创建MyFirstPlugin代理对象,然后再创建了MySecondPlugin代理对象,其三者的关系是晚创建的包含早创建的,在执⾏⽬标⽅法的时候⾃然⽽然是从外向⾥执⾏。
图2:动态代理模型
四、使⽤PageInterceptor插件
1、导包
需要两个包,可以在GitHub上⾯下载:点此下载
enum类型如何使用
图3:下载这两个jar包
2、在全局配置⽂件中注册PageInterceptor插件