JFinal为了简化代码,为我们提供了Interceptor 拦截器,可对目标方法的前后添加切面代码,最终实现AOP的核心目标。
那么什么是AOP呢,借用前人的话讲:在软件系统实现过程中,在很多模块操作中都会用到一些相同的固定的逻辑操作,比如权限验证、日志记录、性能检测等,这些都是公共的逻辑,贯穿整个系统实现过程中。面向切面编程就是将这些公共的逻辑和系统本身核心的业务逻辑分离开来集中管理,这样一方面对减轻系统本身的业务逻辑,另一方面降低耦合度,提高可重用性,便于后期扩展维护。
以我个人粗浅的理解就是,在执行目标方法时,优先或者延后执行另一个方法。
那么JFinal的拦截器怎么实现呢,我们一起来看一下。
首先可以对JFinal的Interceptor拦截器做个简单的分类(以拦截的范围来分),分别是:
Method Interceptor:方法级别拦截器
Class Interceptor:类级别拦截器
Router Interceptor:路由级别拦截器
Global Interceptor:全局拦截器
Inject Interceptor:业务注入拦截器
这五种拦截器在实际项目中都有可能用到,下面我们一起来实战一下Method Interceptor 拦截器。
首先新建类,添加test方法输出一段话
之后在test方法前加上MethodInterceptor拦截器
可以看到拦截器内部是这样写的
最后添加访问路由进行测试
可以看到是先执行了拦截器的内容,再执行了方法的内容,最简单的Method Interceptor拦截器完成。