使用MongoDB Panache的CodecProvider中无法进行依赖项注入吗?

我可以按照official documentation中所述处理自定义MongoDB编解码器提供程序的创建,但是是否可以按如下所示在CodecProvider中获得依赖项注入?

@ApplicationScoped
public class MyCodecProvider implements CodecProvider {

    @Inject
    HistoryService historyService;

    @Override
    public <T> Codec<T> get(Class<T> clazz,CodecRegistry registry) {
        if(History.class.isAssignableFrom(clazz))
            return new HistoryCodec(historyService.getSchema());
        return null;
    }
}

如果没有,您将如何在Quarkus中实现可识别应用程序的编解码器?

达米恩

iCMS 回答:使用MongoDB Panache的CodecProvider中无法进行依赖项注入吗?

这是不可能的,我不认为我们会支持它。

MongoDB编解码器的目的是将对象序列化到MongoDB数据库,它不是CDI bean,而只是POJO。

这是与Jackson或JSON-B序列化器/反序列化器相同的类,它们也不是CDI bean。

如果您想执行某些映射阶段(这正是您的代码似乎要做的),则应在将对象持久保存到MongoDB之前在服务层上进行此操作。

编解码器只是一个类,用于处理如何将对象的属性(例如Java Bean)映射到BSON文档。不应进行任何复杂的计算(想象有人会从编解码器中调用数据库!)。

本文链接:https://www.f2er.com/1792977.html

大家都在问