AOP编程实践总结

AOP概述
  • AOP(Aspect-Oriented Programming,面向方面编程)是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。AOP利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为 “Aspect”,即方面。

    AOP应用
  • AOP的经典运用应该是spring中应用,在spring中是基于动态代理来实现AOP的,它的功能也更强大,可以完全实现不侵入业务代码。
  • AOP的另外一种应用是有侵入式的,但是只需要侵入一次,其实质就是事件埋点的形式,在业务代码的各个节点埋点触发对应的代理对象,再由代理对象来批量处理主业务后的次业务逻辑。

实践总结
  • 比如接收发货单模块,它的主体业务是接收发货单,生成发货单。但是后边还有有很多次级业务,不如利润计算,日志记录,订单轨迹写入,积分处理等等,那就需要在发货单完成后的节点埋点,产生接收发货单成功事件。然后在代理类里去处理其它次级业务。而这些次级业务都可以单独封装成服务模块,在代理类里批量调用这些服务。代理类和次级业务模块之间还可以通过引入配置文件的形式实现解耦。
优点
  • 这些次级业务被独立出来成为一个个切面后,避免和主业务逻辑交叉在一起。
  • 可以实现对这些次级业务的单元测试。
  • 可以不用带主业务代码
参考

最新文章

  1. ambari2.4.2_centos7 学习全纪录
  2. windows 下 新建 点开头的文件和文件夹
  3. IntelliJ IDEA通过Spring配置连接MySQL数据库
  4. UVa 537 Artificial Intelligence?
  5. 在fedora 桌面上添加应用程序
  6. 超级 Ping 监测工具——为您的网络状态保驾护航
  7. 桂电在线-转变成bootstrap版3(记录学习bootstrap)
  8. LinkedBlockingQueue的put,add跟offer的区别(转)
  9. mysql建库
  10. mapreduce新旧api对比
  11. MyBatis单个多个参数传递
  12. 【mongodb系统学习之十】mongodb查询(二)
  13. 《JAVA程序设计》结对编程联系_四则运算(第一周:阶段总结)
  14. wxpython多线程通信的应用-实现边录音边绘制音谱图
  15. 非阻塞模式(ioctlsocket)
  16. 正态分布-python建模
  17. Ajax 执行顺序
  18. JS字符串常用方法总结
  19. lower_bound && upper_bound
  20. bzoj5102: [POI2018]Prawnicy

热门文章

  1. slim中的参数获取
  2. acwing 239. 奇偶游戏 并查集
  3. 序列化表单数据$("form").serializeArray()
  4. Redisson实现Redis分布式锁的底层原理
  5. CPP STL学习笔记
  6. k8s集群———单master节点2node节点
  7. <算法><go实现>左括号补全-双栈法
  8. 二、webdriver API
  9. 《带你装B,带你飞》pytest成神之路2- 执行用例规则和pycharm运行的三种姿态
  10. Java中数组的使用