【发布时间】:2014-02-11 12:11:52
【问题描述】:
拦截器和回调有什么区别? 我可以互换使用@AroundConstruct 和@PostConstruct,它们是否总是(或多或少)同时涉及?
【问题讨论】:
-
时间?这当然是一个错误的主题,因为两者的开销都可以忽略不计。
-
你问的是这里的性能,还是事件的顺序?
-
两者,我想知道它们有什么区别。
拦截器和回调有什么区别? 我可以互换使用@AroundConstruct 和@PostConstruct,它们是否总是(或多或少)同时涉及?
【问题讨论】:
正如 cmets 中所指出的,任何一个的开销都可能可以忽略不计,在您真正有真正的问题要讨论之前,不值得担心。
至于事件的顺序(和其他差异),AroundConstruct 和 PostConstruct 的 javadocs 回答了这个问题。
AroundConstruct 必须在拦截器上定义,并且在最后一个此类拦截器调用InvocationContext 上的proceed 方法后调用真正的构造函数。因此,从技术上讲,这些将在构造函数之前运行,但在它运行后您会重新获得控制权(因此命名为“Around”),因此您也可以进行后处理。
PostConstruct 可以定义在拦截器或任何对象本身没有参数的 void 方法上。它在容器完成依赖注入后调用(因此名称为“Post”)。
【讨论】: