将Jackson KotlinModule添加到Micronaut JMS

将Jackson KotlinModule添加到Micronaut JMS,kotlin,jackson,micronaut,Kotlin,Jackson,Micronaut,我创建了一个侦听AWS SQS队列的JMSListener。我成功接收到消息,但无法将接收到的消息反序列化为没有默认值的类 这是我的队列侦听器函数: @Queue(value=“queuename”,concurrency=“1-10”,acknowledgeMode=JMSContext.CLIENT\u ACKNOWLEDGE) 趣味接收(@MessageBody sqsMessage:SQSMessageDto){ .... } …和类别: 类SQSMessageDto( val not

我创建了一个侦听AWS SQS队列的
JMSListener
。我成功接收到消息,但无法将接收到的消息反序列化为没有默认值的类

这是我的队列侦听器函数:

@Queue(value=“queuename”,concurrency=“1-10”,acknowledgeMode=JMSContext.CLIENT\u ACKNOWLEDGE)
趣味接收(@MessageBody sqsMessage:SQSMessageDto){
....
}
…和类别:

类SQSMessageDto(
val notificationType:字符串,
val mail:mail,
val收据:收据
)
函数无法将文本反序列化为SQSMessageDto,除非我为字段提供默认值

我尝试了什么?

当我在调试器模式下在
io.micronaut.jms.serdes.DefaultSerializerDeserializer
上添加断点并手动注册Jackson的KotlinModule时,它就会工作。(
OBJECT\u MAPPER.registerModule(新的KotlinModule())
)但我不知道如何正确创建它

错误消息:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法 构造
com.example.sqs.SQSMessageDto
的实例(无创建者, 与默认构造函数类似,exist):无法从对象值反序列化 (无委托或基于属性的创建者)位于[来源: (字符串)“{……}”]


只需使用
BeanCreatedEventListener
如图所示:

@独生子女 静态类ObjectMapperBeanEventListener实现BeanCreatedEventListener{

    @Override
    public ObjectMapper onCreated(BeanCreatedEvent<ObjectMapper> event) {
        final ObjectMapper mapper = event.getBean();
        mapper.registerModule(new KotlinModule())
        return mapper;
    }
}
@覆盖
已创建公共对象映射程序(BeanCreatedEvent事件){
final ObjectMapper mapper=event.getBean();
registerModule(新的KotlinModule())
返回映射器;
}
}