【发布时间】:2008-09-28 01:21:06
【问题描述】:
使用动态代理时,如何访问底层对象的注解?
具体来说,我正在使用 @Column("client_id") 注释 ORM 对象的设置,然后让动态代理跟踪何时调用带注释的设置器,但是...
带注释的代理似乎没有保留任何底层注释,因此无法在每次调用时执行反射,如何使代理具有它正在代理的类的注释?
谢谢你, 阿兰
【问题讨论】:
标签: java proxy annotations
使用动态代理时,如何访问底层对象的注解?
具体来说,我正在使用 @Column("client_id") 注释 ORM 对象的设置,然后让动态代理跟踪何时调用带注释的设置器,但是...
带注释的代理似乎没有保留任何底层注释,因此无法在每次调用时执行反射,如何使代理具有它正在代理的类的注释?
谢谢你, 阿兰
【问题讨论】:
标签: java proxy annotations
AFAIK,这取决于您的字节码注入库。另外,请记住,注释通常不是继承的(由 Java 规范强加)。如果你想访问原始类,并且正在使用CGLIB,你可以使用这个sn-p:
if (Enhancer.isEnhanced(getClass())) {
currClass = UnEnhancer.unenhance(getClass());
} else {
// else, let's get the original class directly
currClass = getClass();
}
【讨论】: