Моя цель - создать какой-то мост между нашим глобальным посредником событий и системой SpringE ApplicationEvent.
Посредник сообщений предоставляет сообщения в формате JSON.Моя идея состоит в том, чтобы иметь
public class ExternalApplicationEvent extends ApplicationEvent {
...
// e.g @JsonPropert private String name;
}
и затем вызывать что-то вроде
objectMapper.readValue(brokerMessage, ExternalApplicationEvent.class);
Проблема в том, что ApplicationEvent
требуется источник , установленный во время строительства , который должен быть экземпляром ExternalEventBridge
, который по понятным причинам не является частью JSON-документа.
Я обнаружил, как я могу добавить в JSON свойства, которые не являются частьюсериализованный объект с @JsonAppend
, но я не нашел решения для моего направления, передавая параметры конструктору класса.
Моя последняя идея заключалась в использовании
objectMapper.readerForUpdating(new ExternalApplicationEvent(theSource)).readValue(message)
, нокаким-то образом это не заполнило мое событие.
Если я добавлю конструктор
public ExternalApplicationEvent() {
super(new Object());
}
и использую objectMapper.readValue(message, ExternalApplicationEvent.class)
, объект будет правильно заполнен путем внедрения поля.Также добавление сеттеров не поможет.