`
soleghost
  • 浏览: 40786 次
  • 性别: Icon_minigender_1
  • 来自: 未知
社区版块
存档分类
最新评论

AOP应用

阅读更多

AOP应用已经很广了,谈一谈平时工作用到的地方:

1. 打印摘要日志

    打印调用服务时的调用的服务、方法、参数、执行结果、消耗时间

2. 详细的入参出参

    打印调用服务时调用的参数列表,以及返回结果。基于日志量的考虑,对于频繁调用的查询类可能不需要打印;对于操作类服务,可以打印出入参出参

3. 性能监控

    对于每个服务的调用、异步消息的处理、DAO的调用,以及对外围系统的远程调用,设置一个阀值,如果超过此阀值,可以打印出日志,便于排查问题

4.公共的参数设置

   与本地线程变量ThreadLocal结合,便于服务内部使用;每次调用时,将参数设置入ThreadLocal中;每次退出,清空ThreadLocal变量。

5.WEB页面的权限检查

  每次访问WEB页面时,检查是否有权限访问web页面

6.WEB页面的防表单重复提交、防篡改、放XSS攻击

  每次访问WEB页面时,根据Token判断是否重复提交和被用户恶意篡改

7.单元测试的MOCK

    单元测试中,一些依赖外围服务的地方,需要被mock掉,可以采用拦截器,统一生产具体的代理类,返回MOCK的值

8.***************

  太多应用的地方了,只要是可以抽象出公共的地方,大部分都可以考虑采用拦截器的方式。

 

拦截器的原理:

1. java的Proxy和InvocationHandler,只能代理接口类

2. cglib,不仅可以代理接口类,还可以代理具体的实现类

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics