阶段3 2.Spring_08.面向切面编程 AOP_2 spring中的aop术语和细节
基于接口的动态代理要求,要去被代理对象最少实现一个接口
基于子类的动态代理没有实现接口的要求。但是要求我们的被代理类不能是最终类
在Spring中可以选择基于接口还是子类的动态代理
术语
大白话。业务层看到方法就都是连接点。IAccountService中的方法。它是连接什么的呢? 连接我们的业务和增强方法中的那个点。
那么如何把增强的代码也就是事物控制的代码加到我们的业务中来
这些方法可以加上事物的支持。从而让我们的业务方法,形成完整的业务逻辑
PointCut切入点
在业务层中新写一个方法
创建动态代理的时候,不区分哪个方法全部加了事物
写上代码判断,当方法是test的时候,直接return 返回。这样不是业务层的所有方法都被事务支持了。test方法就没有事务的支持
切入点就是被增强的方法。那么test方法没有被增强就不是切入点。
test()方法是连接点。
所有的切入点都是连接点。但所有的连接点不一定都是切入点
advice增强
通知就是拦截到之后要干的事情
invoke方法拦截到后,提供了事物的支持
TansactionManager就是通知。拦截到之后,就是对它进行事物的支持
通知分为这种类型
方法之后的就是后置通知,在catch里面的就是异常通知。finally里面的就是最终通知。
Introducation引介
现阶段用不到,作为了解即可
target目标对象
就是被代理对象
accountService就是被代理对象
weaving织入
原有的Service没法实现事务的支持
于是用了动态代理技术。创建了一个新的对象,返回了一个代理对象。
在返回代理对象的时候 从中加入了事务的支持。加入事物支持的过程叫做织入
proxy代理
retunr 创建出来的这个对象就是proxy
Aspect切面
切入点就是这里哪些方法被增强过
通知就是提供了公共代码的类
公共代码什么时候去执行呢?
建立接入点方法和通知方法再执行调用的对应关系。就是切面。
配置他们之间的对应关系,哪个Service。哪些方法,这些方法何时执行。整个的过程配置出来 就是切面。
明确的事情