CDI拦截器与CDI事件

时间:2018-09-26 18:15:20

标签: java java-ee design-patterns cdi

我有一个关于最佳实现的问题,即在Java EE中拥有尽可能不耦合的系统,问题是使用CDI事件或CDI拦截器是否更好,显然对于安全性来说,它是一个拦截器,用于日志,例如根据具体情况选择两者中的任何一种,但对于必须在执行某项任务的同时又执行另一项任务的业务规则。

撇开异步事件可能发生或可能不发生的可能性,我的疑问更倾向于模块的解耦,因为就我的概念而言,事件比拦截器更解耦,因为在拦截器中包含函数的类必须被定义为拦截,但是对于事件,仅必须定义消息。

1 个答案:

答案 0 :(得分:3)

拦截器和事件无关。它们有不同的用途。

拦截器更像是一种“面向方面的编程”风格的编程。正如您提到的,事件是分离的方面。

拦截器的类型为“代码不知道或不在乎发生了什么”,由于代码必须生成事件,因此代码会积极地参与事件。只是代码不在乎它们发生了什么。

两者都有关注点的分离。

还应注意,CDI事件不是异步的。您可以附加异步操作的侦听器,但不是,它们不是。