AOP编程实践总结
AOP概述
- AOP(Aspect-Oriented Programming,面向方面编程)是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。AOP利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为 “Aspect”,即方面。
AOP应用
- AOP的经典运用应该是spring中应用,在spring中是基于动态代理来实现AOP的,它的功能也更强大,可以完全实现不侵入业务代码。
- AOP的另外一种应用是有侵入式的,但是只需要侵入一次,其实质就是事件埋点的形式,在业务代码的各个节点埋点触发对应的代理对象,再由代理对象来批量处理主业务后的次业务逻辑。
实践总结
- 比如接收发货单模块,它的主体业务是接收发货单,生成发货单。但是后边还有有很多次级业务,不如利润计算,日志记录,订单轨迹写入,积分处理等等,那就需要在发货单完成后的节点埋点,产生接收发货单成功事件。然后在代理类里去处理其它次级业务。而这些次级业务都可以单独封装成服务模块,在代理类里批量调用这些服务。代理类和次级业务模块之间还可以通过引入配置文件的形式实现解耦。
优点
- 这些次级业务被独立出来成为一个个切面后,避免和主业务逻辑交叉在一起。
- 可以实现对这些次级业务的单元测试。
- 可以不用带主业务代码