我有以下情况,需要有关如何处理的建议。
我的项目是带有 spring 的 Maven 模块。
我有以下模块。
1.模块A-WAR
2.模块B-WAR
3.模块C-JAR
模块依赖如下。
模块 A 和 B 具有模块 C 作为依赖项。
我有一个与模块A相关的服务。实现是在模块A中完成的。该服务需要由模块B访问。现在我所做的是向模块C(jar)引入一个接口(interface)来访问该服务。实现留在模块 A 上(该服务真正属于该模块)。模块B通过接口(interface)和项目编译来访问该服务。但问题是 spring 无法在模块 B 中为该服务创建 bean。这是可以理解的,因为 bean (实现)从未出现在模块 B 的依赖项列表中。我该如何解决这个问题?我不想将整个服务移至模块 B,因为这会导致大量代码重复。
最佳答案
" The implementation is left on module A ( which service really belongs)."
不应该,因为模块 A 和模块 B 是两个不同的 WAR,并且它们之间实际上没有任何关系。
如果您希望每个 WAR 在运行时保存实现,则应在每个 WAR 中包含组件实现。
实现应该在一个公共(public) jar 中:模块 C 或另一个。
现在,如果您希望此实现提供的服务仅在模块 A 中。模块 A 构建的 WAR 应该公开一个服务(例如 REST)以允许模块 B 调用它。
但我不确定您是否想这样做。
关于java - Maven - Spring 从接口(interface)引用 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44719605/