Java CDI拦截器与CDI事件
我有一个关于java EE中系统尽可能不耦合的最佳实现的问题,问题是使用CDI事件或CDI拦截器是否更好,显然,对于安全性之类的事情,将是拦截器,对于日志,例如,根据具体情况,这两种情况中的任何一种,但对于业务规则来说,在执行另一项任务的同时必须完成某项任务Java CDI拦截器与CDI事件,java,jakarta-ee,design-patterns,cdi,Java,Jakarta Ee,Design Patterns,Cdi,我有一个关于java EE中系统尽可能不耦合的最佳实现的问题,问题是使用CDI事件或CDI拦截器是否更好,显然,对于安全性之类的事情,将是拦截器,对于日志,例如,根据具体情况,这两种情况中的任何一种,但对于业务规则来说,在执行另一项任务的同时必须完成某项任务 撇开异步事件可能发生或不发生不谈,我的怀疑更倾向于模块的解耦,因为在我的概念中,事件比拦截器更解耦,因为拦截器中包含函数的类必须定义为intercept,但对于事件,只需定义消息。拦截器和事件是不相关的。它们有不同的用途 拦截器更像是一种“
撇开异步事件可能发生或不发生不谈,我的怀疑更倾向于模块的解耦,因为在我的概念中,事件比拦截器更解耦,因为拦截器中包含函数的类必须定义为intercept,但对于事件,只需定义消息。拦截器和事件是不相关的。它们有不同的用途 拦截器更像是一种“面向方面的编程”风格的编程。正如您所提到的,事件是一个解耦方面 拦截器属于“代码不知道或不关心正在发生的事情”类型,当代码积极参与事件时,因为代码必须生成它们。只是代码不关心他们发生了什么 两者都有分离关注的因素
还应注意,CDI事件不是异步的。您可以附加异步行为的侦听器,但开箱即用,它们不是。@phipex只要我们讨论CDI 2.0,就有异步事件和观察器,请参阅