使用动态代理时,如何访问基础对象的注释?

时间:2020-03-06 14:50:13  来源:igfitidea点击:

使用动态代理时,如何访问基础对象的注释?

具体来说,我正在使用@Column(" client_id")注释ORM对象的设置,然后使动态代理跟踪被注释的setter的调用时间,但是...

似乎带注释的代理不会保留任何基础注释,以至于在每次调用时都无法执行反射,如何使代理具有其正在代理的类的注释?

谢谢,
阿兰

解决方案

AFAIK,这取决于字节码注入库。另外,请记住,注释通常不会被继承(由Java规范强加)。如果要访问原始类,并且正在使用CGLIB,则可以使用以下代码段:

if (Enhancer.isEnhanced(getClass())) {
    currClass = UnEnhancer.unenhance(getClass());
 } else {
    // else, let's get the original class directly
    currClass = getClass();
 }