1.什么是AOP
AOP(面向方面编程),AOP(面向对象编程)所关注的方向是横向的。不同于OOP的纵向。AOP就是在某一个类或方法执行前后打个标记(A),声明在执行到A这里之前要先执行什么,执行完A之后要接着执行什么。
2.AOP的术语
- 连接点(join point):对应的具体被连接的对象
- 切点(point cut):有时候,我们的切面不单单应用单个方法,也可能是多个累的不同方法,这时候,可以通过正则或者指示器的规则去定义。
- 通知(advice):分为前置通知(before advice),后置通知(after advice),环绕通知(Around advice ),事后返回通知(AfterReturning advice),异常通知(AfterThrowing advice)
- 目标对象(target):被代理对象
- 引入(introduction):引入新的类和方法,增加现有Been功能
- 织入(weaving):它是一个通过动态代理的技术,为原有的的服务对象生产代理对象,然后将与提诶点定义匹配的连接点拦截,按照约定将个各类通知织入约定的流程里面
- 切面(aspect):是一个可以定义切点,各类的通知和引入的内容,Spring AOP将会通过它的信息来增加Been的功能或者将对应的方法加入流程中。
3.为什么使用AOP
AOP最为典型的应用实际应该就是数据库事物的管控。比如,我们要插入一个用户信息的时候,应该也会插入,其它相关信息到数据库中。如果,在插入的时候,插入其它相关信息失败的时候。我们是不是也要,把插入用户这条数据,也不让插入进去(要么都成功,要么都失败)。这是使用AOP可以解决这些问题。(日志、权限检查等)
SpringBoot之SpringAOP(二:注解开发AOP)