【问题标题】:How to inject config properties inside a Quarkus extension如何在 Quarkus 扩展中注入配置属性
【发布时间】:2019-06-07 13:43:20
【问题描述】:

我正在尝试将以下(工作)代码移至扩展:

@WebListener
public class StartupListener implements ServletContextListener {

    @ConfigProperty(name = "javax.faces.PROJECT_STAGE")
    String projectStage;

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        sce.getServletContext().setInitParameter("javax.faces.PROJECT_STAGE", projectStage);
    }

}

当我将此代码移动到扩展 runtime 模块时,该属性未解析(它为空)。

扩展源码可以是found here

【问题讨论】:

  • 我会让其他人回答问题的核心,但是这个属性真的应该在构建时读取。项目阶段与我们的 dev / test / prod 概念和配置文件的概念很好地映射。这应该在构建时读取并作为构建时引导方法的一部分注入到框架中,而不是作为运行时属性,例如与quarkus.io/guides/extension-authors-guide#bytecode-recording
  • 是的,同意,让 javax.faces.PROJECT_STAGE 与 Quarkus 阶段对齐会很好,这样用户甚至不需要在 application.properties 中添加条目(除非想要覆盖默认值舞台行为)
  • 你的意思是这样的@EmmanuelBernard? github.com/rmpestano/quarkus-myfaces/blob/…

标签: java quarkus supersonic


【解决方案1】:

设法通过配置提供程序使其以编程方式工作:

@Override
public void contextInitialized(ServletContextEvent sce) {
    Config config = ConfigProvider.getConfig();
    String projectStage = config.getValue("javax.faces.PROJECT_STAGE", String.class);
    sce.getServletContext().setInitParameter("javax.faces.PROJECT_STAGE", projectStage);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-03
    • 2021-04-17
    • 2017-02-13
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多