Maven - Spring 从接口引用 Bean

Maven - Spring Refer Bean from Interface

我有以下情况,需要有关如何处理的建议。

我的项目是 spring 的 Maven 模块。

我有以下模块。

1.module一个-WAR

2.module B - WAR

3.module C - JAR

模块依赖如下

模块 A 和 B 有模块 C 作为依赖项。

我有一个与模块A相关的服务,实现是在模块A中完成的。这个服务需要被模块B访问。现在我做的是引入一个接口到模块C(jar)来访问这项服务。实现留在模块 A 上(真正属于哪个服务)。模块B通过接口访问该服务,工程编译。但问题是 spring 无法在模块 B 中为该服务创建 bean。这是可以理解的,因为 bean(实现)从不存在于模块 B 的依赖列表中。我该如何解决这个问题?我不想将整个服务移至模块 B,因为它会产生巨大的重复代码。

" The implementation is left on module A ( which service really belongs)."

不应该,因为模块 A 和模块 B 是两个不同的 WAR,它们之间实际上没有任何关系。
如果您希望每个 WAR 在运行时保存实现,则应在每个 WAR.

中包含组件实现

实现应该在一个通用的 jar 中:模块 C 或另一个。

现在,如果您希望此实现提供的服务仅在模块 A 中。模块 A 构建的 WAR 应该公开一个服务(例如 REST)以允许模块 B叫它。
但我不确定你是否想这样做。

This is actually shared service but the most of this responsibility belongs to module A. Moving this module C means adding unnecessary responsibility to module C

也许您可以在模块 C 中实现共享功能,并将具有额外职责的服务扩展到模块 A