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,不仅可以代理接口类,还可以代理具体的实现类
本文介绍了AOP技术在日志记录、性能监控、权限验证等方面的应用,并探讨了通过拦截器实现这些功能的方法。此外,还讲解了Java Proxy和cglib等工具在创建动态代理中的作用。
1063

被折叠的 条评论
为什么被折叠?



