/**
* Created by yzz on 2017/8/13.
* mail:yzzstyle@163.com
*/@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interfaceproxu {//目标执行之前需要执行到的类
Class[] aopbefore();
//目标执行之后需要执行到的类
Class[] aopafter();
//需要代理的接口
Class[] interfaces();
}
动作相关注解
目标执行之前注解标记
/**
* Created by yzz on 2017/8/13.
* mail:yzzstyle@163.com
*/@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interfacedoBefore {
}
目标执行之后注解标记
/**
* Created by yzz on 2017/8/13.
* mail:yzzstyle@163.com
*/@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interfacedoAfter {
}
目标接口
目标接口可以有多个,下面列出两个目标接口
package com.yzz.java.proxyer;
/**
* Created by yzz on 2017/8/13.
*/publicinterfaceIProxy {void method1();
String method2();
String method3(String arg);
}
package com.yzz.java.proxyer;
/**
* Created by yzz on 2017/8/13.
* mail:yzzstyle@163.com
*/publicinterfaceIProxy2 {void methodIProxy2();
}
对应的动作类,可以有多个,我这里就列出两个doAfter标记的,dobefore标记的大同小异
/**
* Created by yzz on 2017/8/13.
* mail:yzzstyle@163.com
*/publicclassAfter1 {@doAfterpublicvoiddobefore1(){
Log.e("After1===bobefore1====");
}
@doAfterpublicvoiddobefore2(){
Log.e("After1===bobefore2====");
}
}
/**
* Created by yzz on 2017/8/13.
* mail:yzzstyle@163.com
*/publicclassAfter2 {@doAfterpublicvoiddobefore1(){
Log.e("After2===bobefore1====");
}
@doAfterpublicvoiddobefore2(){
Log.e("After2===bobefore2====");
}
}