【问题标题】:Osgi annotation processingOsgi注解处理
【发布时间】:2020-09-28 16:45:44
【问题描述】:

我有一个使用@Component 注解声明的组件,其中有一组实现与另一个api 通信的方法,在我的产品中,有匿名ID 的用户禁止的操作。我想创建一个注释,例如@ProhibitedForAnonym,每次调用该方法时,都会检查匿名客户的ID,ID在方法参数中,如果ID匹配则抛出错误。但是我不明白如何在OSGI中进行注释处理,也许是某种拦截器?

【问题讨论】:

    标签: java annotations osgi


    【解决方案1】:

    OSGi 中没有通用的拦截框架。但是,您可以通过以下方式进行拦截:

    1. 不要。就个人而言,我觉得自从我们有了 lambdas 以来,基于代码的解决方案已经胜过了“神奇”的注释检查。它的字符数大致相同,但基于 lambda 的调用允许我单步执行,为安全检查提供上下文,不受THIS 问题的影响,可测试,并且不需要具有大量错误机会的复杂框架。
    2. 使用byte code weaving support in OSGi。您需要尽早注册一个编织器,然后编织任何具有这些注释的类。您可以查看https://github.com/aQute-os/biz.aQute.osgi.util/tree/master/biz.aQute.trace,了解如何使用字节码编织器的示例。确保你的织布工首先在那里。如果您使用 bndtools,您可以将其添加到 -runpath 以便在其他人之前运行。或使用起始关卡。
    3. 使用代理。您可以使用服务挂钩“隐藏”原始服务,然后注册代理。然后,您可以在代理中进行注释检查。这也要求此代码首先运行并且不能更新。我认为spec 有一个这样的例子

    您可能想阅读:https://www.aqute.biz/appnotes/interceptors.html

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多