Spring Integration AbstractReplyProroductionMessageHandler doInit против onInit

1

Я рефакторинг кода от Spring Integration 2.x до 4.x и столкнулся с ошибкой компиляции в обработчике, который расширяет AbstractReplyProducingMessageHandler.

Метод onInit для этого абстрактного класса является final, но мой legacy код успешно переопределяет его в коде 2.0 SI.

Существует метод, который, как представляется, может быть перенаправлен

doInit()

Какая разница в использовании между onInit метода и doInit метода. Документы java не очень полезны (на самом деле они не содержат никакой информации, кроме того, onInit метод onInit является final.)

Теги:
spring
spring-integration

1 ответ

1

Да, вы правы: нет никакой разницы с этими методами, и они просто вызываются из IntegrationObjectSupport#afterPropertiesSet().

Причина сделать onInit() final для защиты реализации от проблемы, не вызывающей super.onInit() в их реализации :-).

Как вы видите, AbstractReplyProducingMessageHandler#onInit() имеет критический код, например:

this.advisedRequestHandler = (RequestHandler) proxyFactory.getProxy(this.beanClassLoader);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню