【问题标题】:Return object with spring events?返回带有弹簧事件的对象?
【发布时间】:2018-04-26 03:08:23
【问题描述】:

我有 maven module_A 服务 rom,我需要调用 module_B 服务。目的是保持耦合最小

  1. Approach1:- 这是我们通常习惯的方法。 module_B 将被注入到 module_A 下,并从 service_A 调用 service_B。 但它将 module_B 与 module_A 紧密耦合。

  2. Approach2:- Spring 事件,例如 this example。使用这种方法,监听器可以在 module_A 中。 例如:- 我需要从 module_B 调用 module_A(EmployeeService.findEmployee(int id))。我能做的是我会创造 EmployeeFinderCustomEvent 将包含 employeeId。事件将从 module_B 发布。

EmployeeFinderCustomEventListener 将位于 module_A 下并找到该员工。但我需要从监听器返回Employee 对象 应该返回给module_B调用服务。但是onApplicationEvent 返回类型是 void..

     @Override
        public void onApplicationEvent(EmployeeFinderCustomEvent cse) {
            // find employee
        }

如何将对象从spring事件监听器返回给调用者以实现松耦合?

【问题讨论】:

    标签: java spring decoupling


    【解决方案1】:

    应用程序事件不打算以这种方式工作。

    您可以将EmployeeService 接口放在 A 和 B 都依赖的单独模块中,并在模块 A 中保留实现(EmployeeServiceImpl 或其他)。此解决方案不需要模块 B 依赖于模块 A。

    【讨论】:

    • 您发布的是依赖倒置。但这样我的模块 B 仍将依赖于包含接口的抽象模块(数量可能很大)。有没有办法让它们与弹簧完全分离(弹簧事件关闭但不返回对象)?
    猜你喜欢
    • 2022-10-04
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多