1

我可以按照官方文档中的描述处理自定义 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 中实现应用感知编解码器?

达米安

4

1 回答 1

1

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

MongoDB Codec 的目的是将对象序列化到 MongoDB 数据库,它不是 CDI bean,它只是 POJO。

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

如果您想执行一些映射阶段(这似乎是您的代码所做的),您应该在将对象持久化到 MongoDB 之前在您的服务层上执行此操作。

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

于 2020-08-07T07:36:03.840 回答