拦截器和回调有什么区别? 我可以互换使用 @AroundConstruct 和 @PostConstruct 吗?它们总是(或多或少)同时涉及吗?
最佳答案
正如评论中所指出的,两者的开销可能都可以忽略不计,并且在您确实有真正的问题要讨论之前不值得担心。
至于事件的顺序(以及其他差异),AroundConstruct 的 javadocs和PostConstruct回答这个问题。
AroundConstruct
必须在拦截器上定义,并且在最后一个此类拦截器调用 InitationContext
上的 proceed
方法后调用真正的构造函数。因此,从技术上讲,这些将在构造函数之前运行,但在运行后您将获得控制权(因此名称为“Around”),因此您也可以进行后处理。
PostConstruct
可以在拦截器或任何对象本身没有参数的 void 方法上定义。它在容器完成依赖项注入(inject)后调用(因此名称为“Post
”)。
关于java ee7 拦截器与回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21701511/