首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringAOP生成的动态子类缺少注释。

SpringAOP生成的动态子类缺少注释。
EN

Stack Overflow用户
提问于 2009-07-01 14:31:49
回答 1查看 376关注 0票数 3

我试图使用Spring将行为注入到对象中。目标对象有一个方法,它是这个新行为的连接点。该方法还具有一个自定义注释,我希望能够从其他无关代码中读取该注释。因为我的类没有实现接口,Spring使用CGLIB动态子类目标对象。生成的子类似乎没有将注释添加到原始类中。

我尝试在没有运气的情况下将@继承注释添加到自定义注释中。事实证明,“继承”只适用于类。这表明Spring必须显式地将我的注释应用于子类中的重写方法。

编辑:我找到了一个解决办法和一些关于这个问题的更多信息。看来CGLib的人已经意识到了这个问题。注释被视为Java中的实现(而不是方法签名的一部分)。重写方法必须重新声明注释.CGLib不会这么做(通过事物的声音)。

我的解决办法是改变我的反思逻辑。当我搜索传递给我的类上的带注释的方法时,我现在看这个类,它是超类。最后,我使用超类来定位方法(在代理的情况下),但是当我调用该方法时,就会应用普通的polymorphisim。这就产生了一些丑陋的反射代码(甚至比正常情况更难看)。看起来,我也不应该对代码中的SpringAOP实现细节进行补偿。

看起来Spring应该提供一种更干净的方法来处理这个问题。如果有人有其他建议,我们将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2009-07-01 15:29:43

您确定将注释上的RetentionPolicy设置为运行时吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1069460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档