You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发带定时器触发的Quarkus Azure Function时依赖注入报NPE问题咨询

问题根因

你遇到的空指针异常是因为当前entryPoint配置直接触发普通类方法调用,绕过了Quarkus的CDI容器初始化流程,@Inject 注解标注的BoingService没有被容器实例化和注入,调用时自然为null。移除boingService.sayBoing()调用后没有使用注入Bean,所以不会触发空指针。

解决方案

不需要大幅修改现有逻辑,可选择以下任意一种方案修复:

  • 方案一:调整触发入口为Quarkus识别的Function方法
    Quarkus Azure Function扩展会自动识别带@FunctionName注解的方法作为触发入口,同时完成CDI上下文初始化。你可以直接修改function.json的entryPoint为标注了@FunctionName的方法:
    "entryPoint" : "yoink.BoingService.sayBoing",
    
    如果需要调用DoingService的逻辑,直接在BoingService里注入DoingService调用即可,此时所有注入的Bean都会被正常初始化。
  • 方案二:保留现有入口,主动从CDI容器获取Bean
    如果你要保留DoingService作为入口,可以不用@Inject注入,改为主动从CDI上下文获取已经初始化的Bean实例:
    import jakarta.enterprise.inject.spi.CDI;
    
    @ApplicationScoped
    public class DoingService {
      public void sayDoing( ){
        BoingService boingService = CDI.current().select(BoingService.class).get();
        boingService.sayBoing();
        System.out.println("Doiing");
      }
    }
    
  • 注意事项:请确认你的项目已经引入了quarkus-azure-functions扩展依赖,Quarkus会自动适配Azure Function运行时的上下文初始化逻辑,无需额外手动配置容器。

内容的提问来源于stack exchange,提问作者Saitama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 07:06:05