我有一个关于最佳实现的问题,即在Java EE中拥有尽可能不耦合的系统,问题是使用CDI事件或CDI拦截器是否更好,显然对于安全性来说,它是一个拦截器,用于日志,例如根据具体情况选择两者中的任何一种,但对于必须在执行某项任务的同时又执行另一项任务的业务规则。
撇开异步事件可能发生或可能不发生的可能性,我的疑问更倾向于模块的解耦,因为就我的概念而言,事件比拦截器更解耦,因为在拦截器中包含函数的类必须被定义为拦截,但是对于事件,仅必须定义消息。
答案 0 :(得分:3)
拦截器和事件无关。它们有不同的用途。
拦截器更像是一种“面向方面的编程”风格的编程。正如您提到的,事件是分离的方面。
拦截器的类型为“代码不知道或不在乎发生了什么”,由于代码必须生成事件,因此代码会积极地参与事件。只是代码不在乎它们发生了什么。
两者都有关注点的分离。
还应注意,CDI事件不是异步的。您可以附加异步操作的侦听器,但不是,它们不是。