Я рефакторинг кода от Spring Integration 2.x до 4.x и столкнулся с ошибкой компиляции в обработчике, который расширяет AbstractReplyProducingMessageHandler
.
Метод onInit
для этого абстрактного класса является final
, но мой legacy
код успешно переопределяет его в коде 2.0 SI.
Существует метод, который, как представляется, может быть перенаправлен
doInit()
Какая разница в использовании между onInit
метода и doInit
метода. Документы java не очень полезны (на самом деле они не содержат никакой информации, кроме того, onInit
метод onInit
является final
.)
Да, вы правы: нет никакой разницы с этими методами, и они просто вызываются из IntegrationObjectSupport#afterPropertiesSet()
.
Причина сделать onInit()
final
для защиты реализации от проблемы, не вызывающей super.onInit()
в их реализации :-).
Как вы видите, AbstractReplyProducingMessageHandler#onInit()
имеет критический код, например:
this.advisedRequestHandler = (RequestHandler) proxyFactory.getProxy(this.beanClassLoader);