CDI 拦截器与 CDI 事件
CDI Interceptor vs CDI events
我有一个关于在 java EE 中拥有一个尽可能不耦合的系统的最佳实现的问题,问题是使用 CDI 事件还是 CDI 拦截器更好,显然对于诸如security 将是一个拦截器,例如根据特定情况的日志中的任何一个,但对于必须在执行另一个任务时必须完成特定任务的业务规则。
撇开异步事件可能发生也可能不发生不谈,我的怀疑更倾向于模块的解耦,因为对于我的概念,事件比拦截器更解耦,因为在拦截器中 class 必须定义包含函数的拦截,但在事件的情况下,必须只定义消息。
拦截器和事件无关。它们有不同的用途。
拦截器更像是一种 "Aspect Oriented Programming" 编程风格。正如您所提到的,事件是一个解耦方面。
拦截器属于 "the code doesn't know or care about what's happening" 类型,其中代码主动参与事件,因为代码必须生成它们。只是代码不关心他们会发生什么。
两者都有关注点分离的要素。
还应注意 CDI 事件不是异步的。您可以附加异步操作的侦听器,但开箱即用,它们不是。
我有一个关于在 java EE 中拥有一个尽可能不耦合的系统的最佳实现的问题,问题是使用 CDI 事件还是 CDI 拦截器更好,显然对于诸如security 将是一个拦截器,例如根据特定情况的日志中的任何一个,但对于必须在执行另一个任务时必须完成特定任务的业务规则。
撇开异步事件可能发生也可能不发生不谈,我的怀疑更倾向于模块的解耦,因为对于我的概念,事件比拦截器更解耦,因为在拦截器中 class 必须定义包含函数的拦截,但在事件的情况下,必须只定义消息。
拦截器和事件无关。它们有不同的用途。
拦截器更像是一种 "Aspect Oriented Programming" 编程风格。正如您所提到的,事件是一个解耦方面。
拦截器属于 "the code doesn't know or care about what's happening" 类型,其中代码主动参与事件,因为代码必须生成它们。只是代码不关心他们会发生什么。
两者都有关注点分离的要素。
还应注意 CDI 事件不是异步的。您可以附加异步操作的侦听器,但开箱即用,它们不是。