我正在重构从Spring Integration 2.x到4.x的一些代码,并在扩展AbstractReplyProducingMessageHandler
的处理程序中遇到编译错误。
该抽象类的onInit
方法为final
,但我的legacy
代码在2.0 S.I.代码中成功覆盖它。
有一种似乎可以被覆盖的方法叫做
doInit()
onInit
方法和doInit
方法之间的区别有何不同。 java文档不是很有帮助(事实上它们除了onInit
方法final
之外不包含任何信息。)
答案 0 :(得分:1)
是的,你是对的:这些方法没有区别,只是从IntegrationObjectSupport#afterPropertiesSet()
调用它们。
将onInit()
设为final
以保护实施不会在其实施中调用super.onInit()
的原因: - )。
如您所见AbstractReplyProducingMessageHandler#onInit()
有关键代码,如:
this.advisedRequestHandler = (RequestHandler) proxyFactory.getProxy(this.beanClassLoader);