java - 如何从父项目的不同 jar 访问服务
问题描述
我的项目有以下架构:有两个库(在 POM.xml 中作为 jar 导入):
- 组件 1
- 组件 2
这些库被导入到父项目中以公开公共 API。 现在的场景是组件 2 还依赖于组件 1 的一些服务。(例如,组件 2可能调用组件 1的服务 A 或服务 B)。
如何使组件 2 可以访问这些服务?我正在使用 Java 和 Spring。
`
+---------------------------------------------------------------------+
| Component Imported as jars |
| +------------------------------+ |
| | Component 1 | |
| | | |
| | | |
| | +-------------------------+ | |
| | |Service A | | |
| | +-------------------------+ | |
| | | |
| | +-------------------------+ | |
| | |Service B | | |
| | +-------------------------+ | |
| +------------------------------+ |
| Parent Project |
| |
| +------------------------------+ |
| | Component 2 | |
| | | |
| | +-------------------------+ | |
| | |Service 1 | | |
| | +-------------------------+ | |
| | +-------------------------+ | |
| | |Service 2 | | |
| | +-------------------------+ | |
| | | |
| | | |
| | | |
| +------------------------------+ |
| |
+---------------------------------------------------------------------+
解决方案
创建一个仅包含服务 1、2、A 和 B 的接口的新项目,然后导入 Component1 和 Component2 poms 然后修改服务以实现各自的接口,记住在 implementations 中添加 @Service 注解
@Service
public class ServiceA implements ServiceAInterface
如果您需要在组件 2 中使用 serviceA,请添加接口作为类型和 @Autowired 注释的属性
@Autowired
private ServiceAInterface service;
这样您就可以使用 serviceA 功能而无需移动代码
推荐阅读
- android - 具有多个布局的 RecyclerView 未正确更新或在新数据上崩溃
- c# - c# XDocument.Root.Add 不添加任何元素
- c - 在 C 语言中使用宏是可移植的吗?
- python - 在 Python 中从 JSON 文件中提取数据
- python - Seaborn 散点图用循环绘制多个图
- java - 为什么我的 JPanel 没有绘制我的 BufferedImage?
- c++ - 制作一个函数,打印在 c++ 中作为参数给出的任何变量
- html - Vue.js - v-for 水平显示图像(5 行)
- python - 在 Python 中不使用 Numpy 随机生成具有 0 和 1 数字的二维数组
- javascript - 将变量值从函数移动到其他函数JS