我正在尝试构建一个 SpringBoot 微服务架构,例如 ShopSystem,它依赖于其他微服务(例如“Customer”)。作为依赖管理工具,我使用 Maven,客户创建一个 JPA 存储库,但现在当我尝试将客户依赖项放入商店系统 pom.xml 时,商店系统尝试创建另一个客户存储库。因此商店服务不会启动,因为已经存在客户存储库。 我希望商店系统中存在客户依赖性,因为我在商店中使用“Customer.class”作为 CustomerService-Methods 的返回类型,例如检索 customerId、客户的购物车等。
我应该如何处理这些服务之间的依赖关系,或者我应该只返回 customerId,由于信息隐藏、关注点分离,这将是一个整数......
如果有必要了解问题并且它们在单独的 SpringBoot 应用程序进程中运行,则这些服务通过 Rest 与 OpenFeign 连接。
我见过一些带有parent.pom的东西,但我不确定这是否能解决我的问题,对我来说这似乎不是一个干净的解决方案。
我试图排除 customer.jar 中的“数据库”包,因为我只想从服务中删除一个特定的类,而不需要其他任何东西,但这并不像我想象的那样有效。如果这可行,这是正确的做法还是应该在实践中避免这样做,因为在我看来,这将是解决我的问题的最简单的解决方案?
在微服务架构中,内部服务逻辑或数据库模型不应该暴露给其他微服务。
在客户服务中定义 REST API 合约,公开必要的操作,例如检索客户详细信息。在 Customer 和
CustomerDTO
服务中创建 DTO 类,例如 ShopSystem
,并在 OpenFeign
服务中使用 ShopSystem
客户端来使用 API。 DTO 对象仅包含 ShopSystem
需要的必要字段,例如 customerId
等。
ShopSystem
不直接依赖于客户服务的数据库或内部实现。