SpringAop的简介
什么是AOP?
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,是通过运行期动态代理的技术,
实现程序功能统一维护的一种技术。
AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业
务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时
提高了程序开发的效率。write less do more。
通俗的来说:它就是把我们程序重复的代码抽取出来,在需要的时候,利用动态代理,在不修改源码的
情况下,对我们的已有方法进行功能的增强。这就相当于方法的拦截器。批量方法功能的动态增强。
回顾OOP(面向对象编程)
三大特征:封装、继承和多态
比如说,有Dog类、Cat类、Horse类,它们都有eat方法,run方法,按照OOP的编程思想,那么
我们可以抽象出父类Animal,在父类中放置相同的属性或者方法,这样来避免多子类中重复的代
码。
OOP是纵向抽取和继承体系,OOP很多场合都能够解决我们的问题【代码重复问题】,但是有一
些场合,也有它处理不了的需要被解决的大量的代码重复问题。
横切逻辑中
- 横切逻辑往往在很多重复的代码
- 横切逻辑重复代码和业务代码混杂在一起,让业务代码变得臃肿不堪。我们理想的状态应该是,业务代码只负责处理业务问题。
- OOP已经不能抽取横切逻辑,解决不了横切逻辑重复代码的问题!所以,AOP横空出世,AOP独辟蹊径的提出了横向抽取机制,将业务逻辑和横切逻辑分离,但分离不是难事,难的是分离之后,怎
么再把横切逻辑融合到原有业务逻辑中,达到和原来相同的效果呢?
为什么叫面向切面编程?
AOP要做增强的横切逻辑往往影响的不是一个方法,而是很多方法。影响了一大片方法,有一个“面”的
概念在里面,所以起名叫做面向切面编程。
AOP的作用、优势及实现方式
- 作用:在程序运行期间,不修改源码,对已有方法进行增强。
- 优势:减少重复代码,提高开发效率,方便维护【write less do more】
- AOP的实现方式:使用动态代理技术,没有动态代理就没有AOP
- AOP经典案例:记录日志、性能监控、事务管理、权限控制