我可以按照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中实现可识别应用程序的编解码器?
达米恩
答案 0 :(得分:1)
这是不可能的,我不认为我们会支持它。
MongoDB编解码器的目的是将对象序列化到MongoDB数据库,它不是CDI bean,而只是POJO。
这是与Jackson或JSON-B序列化器/反序列化器相同的类,它们也不是CDI bean。
如果您想执行某些映射阶段(这正是您的代码似乎要做的),则应在将对象持久保存到MongoDB之前在服务层上进行此操作。
编解码器只是一个类,用于处理如何将对象的属性(例如Java Bean)映射到BSON文档。不应进行任何复杂的计算(想象有人会从编解码器中调用数据库!)。