1

我正在将一些代码从 Spring Integration 2.x 重构为 4.x,并且在扩展的处理程序中遇到了编译错误AbstractReplyProducingMessageHandler

onInit抽象类的方法是final,但我的legacy代码在 2.0 SI 代码中成功覆盖了它。

有一种方法似乎可以被覆盖,称为

doInit()

onInit方法和方法在使用上有什么区别doInit。java 文档不是很有帮助(事实上,它们不包含任何信息,除了onInit方法是final.)

4

1 回答 1

1

是的,你是对的:这些方法没有区别,它们只是从IntegrationObjectSupport#afterPropertiesSet().

这样做的原因onInit()final为了保护实施免受在实施中不调用的问题super.onInit()的影响:-)。

如您所见AbstractReplyProducingMessageHandler#onInit(),有如下关键代码:

this.advisedRequestHandler = (RequestHandler) proxyFactory.getProxy(this.beanClassLoader);
于 2015-03-25T14:29:29.650 回答