搜索

7.5. 注册课程来反映

download PDF

默认情况下,动态反映在原生模式中不可用。需要反映访问的类,必须在编译时注册以反应。

在很多情况下,应用程序开发人员不需要小心,因为 Quarkus 扩展可以检测需要反映的类并自动注册它们。

然而,在某些情况下,Quarkus 扩展可能会错过一些类,它取决于应用程序开发人员进行注册。有两种方法可以做到这一点:

  1. @io.quarkus.runtime.annotations.RegisterForReflection 注释可用于注册所使用的类,或者通过 targets 属性注册第三方类。

    import io.quarkus.runtime.annotations.RegisterForReflection;
    
    @RegisterForReflection
    class MyClassAccessedReflectively {
    }
    
    @RegisterForReflection(
        targets = {
            org.third-party.Class1.class,
            org.third-party.Class2.class
        }
    )
    class ReflectionRegistrations {
    }
  2. application.properties 中的 quarkus.camel.native.reflection 选项:

    quarkus.camel.native.reflection.include-patterns = org.apache.commons.lang3.tuple.*
    quarkus.camel.native.reflection.exclude-patterns = org.apache.commons.lang3.tuple.*Triple

    要使这些选项正常工作,包含所选类的工件必须包含 Jandex 索引('META-INF/jandex.idx'),或者必须使用 'application.properties' 中的 'quarkus.index-dependencyAPPEND' 选项进行索引注册,例如:

    quarkus.index-dependency.commons-lang3.group-id = org.apache.commons
    quarkus.index-dependency.commons-lang3.artifact-id = commons-lang3
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.