保留CGLIB代理上的注释?

Nir*_*rav 18 java annotations cglib

我试图使用AOP框架创建一个对象,该框架使用CGLIB来创建代理对象.奇怪的是,"增强型"代理对象没有上一课所有的任何注释!

任何人都可以告诉我如何让CGLIB保留其创建的代理上的注释?

干杯! Nirav

noe*_*ego 15

CGLIB创建给定类的子类以生成代理.除非在注释定义中明确指定,否则注释不会保留在子类中.@Inherited注释用于此目的.

您可以在定义的注释中使用此批注,并使其在子类中可访问,如下所示:

@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation {
}
Run Code Online (Sandbox Code Playgroud)


ska*_*man 5

这不是"保留"注释的问题.CGLIB代理实际上是目标对象类的子类.这些子类可能没有注释,但是它们的超类(即您自己的类)仍然会有它们.您使用的任何注释反射代码都需要能够查找类层次结构以查找注释.