声明式或者注解式AOP or Interceptor

一、常用的AOP实现:

1、使用AspectJ注解或者配置XML去实现AOP
2、使用实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类,即使用Spring MVC拦截器去实现AOP。

二、使用场景

1、使用AspectJ注解或者配置XML去实现AOP提供了
@Before
@After
@AfterReturning
@AfterThrowing
@Around
使你在时机上有更多的选择,也更标准
execution
within
this
target
args
@target
@args
@within
@annotation
Pointcut让你在使用的位置空间上更加自由

拦截器仅提供pre、post、after三种调用时机,而拦截的只能是Http请求的url。
因此使用AspectJ注解或者配置XML去实现AOP提供了更广泛的应用范畴,在不需要对每个请求都进行拦截或者需要高度自定义,高度可配置,高度可插拔,非必要拦截,就使用这种方式。

2、需要拦截每个请求,比如记录日志、检查权限等等;需要使用request和response的时候,使用拦截器处理方便。


image.png

拦截器常见应用场景
1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。
2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;
3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);
4、通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。
5、OpenSessionInView:如Hibernate,在进入处理器打开Session,在完成后关闭Session。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容