java - Maven - Spring 从接口(interface)引用 Bean

标签 java spring maven-3

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

我的项目是带有 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/

相关文章:

java - 分配变量以显示数组索引时遇到问题

maven-2 - 使用 maven 自动部署保存 Netbeans 企业项目

maven - 如何从本地 Maven 仓库中删除项目 Artifact ?

maven - 如何查找有关 Liberty Maven 插件的详细文档?

Java Robot MousePress() 在 Windows 任务管理器上不起作用

java - cache()/persist() 的 apache-spark 内存消耗

java - 如何使用 JFace MenuManager 将文本框添加到子菜单?

java - 部署到 Tomcat 服务器时包含 spring-boot-starter-tomcat 会出现什么问题?

java - Feign中获取path变量

java - 如果数据库记录中有 LocalDate 属性,如何按月和年过滤数据库记录?