aop:Aspect-Oriented Programing 面向切面编程
谁被别人代理,就是代理目标
谁代理别人,谁就是代理对象
每个正在执行的方法就是一个执行点
每个方法都可能成为一个执行点,只要它被调用导致它在执行
before 方法执行前 after-return 方法返回后 / after-throw 方法抛出异常后 after 方法执行后 around 方法执行前 和 方法执行后 try{ // before int result = MathHelper.div( 100 , 2 ); // after-return } catch ( Exception e ) { // after-throw } finally { // after }
连接点=执行点+方位
连接点就是Advice 可能插入的位置
在连接点处添加的代码就是Advice
对连接点进行筛选的条件就是切点
类似于SQL语句的WHERE子句
将来我们可以通过切点表达式来选择连接点
切面 = 切点+ Advice
切点用于确定在哪里加入Advice
Advice用于确定加入什么样的代码
将需要添加的Advice添加到目标位置的过程就是织入
织入顺序:确定Advice的天机啊顺序
织入方式:
编译期织入:即在将 .java编译成 .class时就织入相应的代码
类加载器织入:即在类加载时使用特殊的"类加载器"织入相应的代码
运行期织入: 即在运行时动态织入相应的代码