Я пытаюсь развернуть функцию AWS Lambda, написанную с использованием Spring Cloud Function 2.1.0, которая получает событие API Gateway.Поэтому я установил ApplicationContextInitializer
, как показано ниже, а также SpringBootApiGatewayRequestHandler
.К сожалению, я сталкиваюсь с исключением: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of
org.springframework.messaging.Message (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
.
Я изучил тестовые случаи и примеры функций spring-cloud, но не смог найти пример для регистрации функционального компонента с Message
параметром / возвращаемым значением.
@SpringBootConfiguration
public class ServiceConfiguration implements ApplicationContextInitializer<GenericApplicationContext> {
public static void main(String[] args) {
FunctionalSpringApplication.run(ServiceConfiguration.class, args);
}
public Function<Message<Pojo>,Message<Pojo>> transformMessage() {
return request -> new GenericMessage<>(new Pojo(request.getPayload().getValue().toUpperCase()));
}
@Override
public void initialize(GenericApplicationContext applicationContext) {
applicationContext
.registerBean("transformMessage", FunctionRegistration.class,
() -> new FunctionRegistration<>(transformMessage())
.type(FunctionType.from(Message.class).to(Message.class)));
}
}
public class TransformMessageHandler extends SpringBootApiGatewayRequestHandler {
}
Может ли кто-нибудь указать мне на рабочий пример или дать подсказку о том, как правильно его зарегистрировать?