Spring websocket: como converter facilmente a carga útil da Message <?> Para POJO no ChannelInterceptorAdapter

Eu tenho um aplicativo Spring trabalhando com websocket

Eu posso fazer a conexão e enviar mensagens etc.

o@Controller é:

    @MessageMapping("/ws/notification")
    @SendTo("/topic/springframework.topic.websocket.reply")
    public NotificationReply handleNotification(Notification notification) {
     ...
    }

Funciona bem. Observe o tipo de parâmetro,Notification, é um objeto personalizado.

Agora, porque para fins de auditoria, tenho o seguinte:

@Component
public class MessageChannelInterceptorAdapter extends ChannelInterceptorAdapter {

    @Override
    public void postSend(Message<?> message, MessageChannel channel, boolean sent) {

        StompHeaderAccessor stompHeaderAccessor = StompHeaderAccessor.wrap(message);

           ....

        switch(stompHeaderAccessor.getCommand()) {
            case CONNECT:
                logger.info("postSend ...");
                logger.info("STOMP Connect");
                break;
            ...
            case SEND:
                logger.info("postSend ...");
                logger.info("STOMP Send");
                printDetails(message, stompHeaderAccessor);
                break;

        ...
    } 


    private void printDetails(Message<?> message, StompHeaderAccessor stompHeaderAccessor) {
        logger.info("   {}", message.toString());
        logger.info("       Payload: {}", message.getPayload());
        logger.info("       Payload (String): {}", message.getPayload().toString());
        logger.info("           Payload (Class): {}", message.getPayload().getClass());

        if(stompHeaderAccessor.getDestination()!=null && stompHeaderAccessor.getDestination().equals("/app/ws/notification")) {
            logger.info("Aprrrr");
            Notification notification = (Notification) message.getPayload();
            logger.info("{}", notification);
        }

Eu recebo:

ERROR o.s.w.s.m.StompSubProtocolHandler - 
Failed to send client message to application via MessageChannel in session 555qe12a. 
Sending STOMP ERROR to client. 
org.springframework.messaging.MessageDeliveryException: 
Failed to send message to ExecutorSubscribableChannel[clientInboundChannel]; 
nested exception is java.lang.ClassCastException: 
[B cannot be cast to com.manuel.jordan.websocket.message.Notification

Eu entendi aquilo[B é umbyte[].

Assim, existe uma maneira fácil com o atualSpring Framework API para fazer uma transmissão para oMessage<?> carga útil para um POJO específico ?.

Lembre-se de ser aplicado dentro da classe que está se estendendo deChannelInterceptorAdapter

questionAnswers(1)

yourAnswerToTheQuestion