在使用MongoDB Panache的CodecProvider中不可能进行依赖项注入



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

Damien

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

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

它与Jackson或JSON-B序列化器/反序列化器的类是同一类,而且它们也不是CDIBean。

如果你想执行一些映射阶段(这就是你的代码似乎要做的(,那么在将对象持久化到MongoDB之前,你应该在服务层上执行。

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

相关内容

最新更新