拦截器的实现原理
大部分的时候,拦截器都是通过代理的方式来调用的,下面以JDK动态代理为例来介绍
如何调用拦截器:
?
Dog接口:
Dog.java
=====模拟通用方法1======我是一只猎狗=====模拟通用方法2======我奔跑迅速
?
正如执行结果所示,通过JDK动态代理,可以在执行目标方法之前调用拦截器方法1,也可以在执行目标方法之后调用拦截器方法2.
通过这种JDK的动态代理方式,系统与拦截器类耦合,与需要拦截方法耦合;但在Struts2框架中,则可以轻松解决这个问题:将拦截器放在配置文件中配置,而不再以硬编码的方式耦合,从而提供了更好的解耦。?
?
?