我正在将一些代码从 Spring Integration 2.x 重构到 4.x,并且在扩展 AbstractReplyProducingMessageHandler
的处理程序中遇到编译错误。
该抽象类上的 onInit
方法是 final
,但我的旧
代码在 2.0 S.I. 代码中成功覆盖了它。
有一个似乎可以被重写的方法,称为
doInit()
onInit
方法和doInit
方法在使用上有什么区别。 java 文档不是很有帮助(事实上,除了 onInit
方法是 final
之外,它们不包含任何信息。)
最佳答案
是的,您是对的:这些方法没有区别,只是从 IntegrationObjectSupport#afterPropertiesSet()
调用。
将 onInit()
设置为 final
的原因是为了防止实现中未调用 super.onInit()
的问题:-)。
如您所见,AbstractReplyProducingMessageHandler#onInit()
具有如下关键代码:
this.advisedRequestHandler = (RequestHandler) proxyFactory.getProxy(this.beanClassLoader);
关于java - Spring 集成 AbstractReplyProducingMessageHandler doInit 与 onInit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258281/