经常用cglib来创建代理类来实现aop的功能,可是,当想用反射来取得代理类所代理的类的注解的时候,却怎么也取不到。。。。
然后搜了下stackoverflow,http://stackoverflow.com/questions/1706751/retain-annotations-on-cglib-proxies
用@Inherited
,注解自己的注解(绕~~)1
2
3
4
5
(RetentionPolicy.RUNTIME)
(ElementType.TYPE)
public MyAnnotation {
}
然后用这个注解注解你要代理的类,那样通过反射可以拿到被代理的注解。
原来CGLIB 返回的代理类是被代理的类的子类,加上这个标志就可以令子类继承这个注解,@Inherited
字面意思就是有继承的意思。