【问题标题】:Annotations present at compile time but absent at runtime编译时存在但运行时不存在的注释
【发布时间】:2010-04-07 14:58:17
【问题描述】:

是否可以使用包含运行时不存在的注解的 Java 类文件?

示例:我想编写一个带有 JPA @Embeddable 注释的类,它会在编译时出现(maven 范围:“提供”)。但是,如果该类在 JPA 应用程序之外使用,则在运行时可能不存在注解定义。

【问题讨论】:

    标签: java jpa annotations


    【解决方案1】:

    您必须:

    1. 在运行时交换已编译的类(以包括没有注释的类。)
    2. 覆盖@Embeddable 的类定义并移除@Retention(RUNTIME)
    3. 只是防止类本身被您的 JPA 提供程序扫描。

    【讨论】:

    • 如果我在 JPA 应用程序之外使用该类,3. 总会遇到,对吧?
    【解决方案2】:

    OSGi 应用程序,例如 Eclipse,将忽略不可访问的注解,即如果您有一个 JPA 注解而没有加载 JPA api,您将不会得到 ClassNotFoundExceptions。

    【讨论】:

      【解决方案3】:

      对于这个特殊的问题,我会简单地在 XML 资源中定义 ORM 映射而不是注释。这些映射可以放在不同的工件 (JAR) 中,根据您是否使用 JPA,将其添加(或不添加)到类路径中。

      【讨论】:

        猜你喜欢
        • 2011-12-17
        • 2014-01-24
        • 2020-04-13
        • 1970-01-01
        • 2015-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多