Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CDI拦截器与CDI事件_Java_Jakarta Ee_Design Patterns_Cdi - Fatal编程技术网

Java CDI拦截器与CDI事件

Java CDI拦截器与CDI事件,java,jakarta-ee,design-patterns,cdi,Java,Jakarta Ee,Design Patterns,Cdi,我有一个关于java EE中系统尽可能不耦合的最佳实现的问题,问题是使用CDI事件或CDI拦截器是否更好,显然,对于安全性之类的事情,将是拦截器,对于日志,例如,根据具体情况,这两种情况中的任何一种,但对于业务规则来说,在执行另一项任务的同时必须完成某项任务 撇开异步事件可能发生或不发生不谈,我的怀疑更倾向于模块的解耦,因为在我的概念中,事件比拦截器更解耦,因为拦截器中包含函数的类必须定义为intercept,但对于事件,只需定义消息。拦截器和事件是不相关的。它们有不同的用途 拦截器更像是一种“

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


撇开异步事件可能发生或不发生不谈,我的怀疑更倾向于模块的解耦,因为在我的概念中,事件比拦截器更解耦,因为拦截器中包含函数的类必须定义为intercept,但对于事件,只需定义消息。

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

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

拦截器属于“代码不知道或不关心正在发生的事情”类型,当代码积极参与事件时,因为代码必须生成它们。只是代码不关心他们发生了什么

两者都有分离关注的因素


还应注意,CDI事件不是异步的。您可以附加异步行为的侦听器,但开箱即用,它们不是。

@phipex只要我们讨论CDI 2.0,就有异步事件和观察器,请参阅