Java 如何处理MicroServices-Spring框架中的依赖关系

Java 如何处理MicroServices-Spring框架中的依赖关系,java,spring,spring-data-jpa,dependencies,microservices,Java,Spring,Spring Data Jpa,Dependencies,Microservices,我想编码三个独立的微服务“CustomerMicroService”,“CartMicroService”和“OrderMicroService”,然后我想通过Spring云连接它们(代理模式和服务发现模式)。但我已经遇到了另一个问题:微服务之间的相互依赖性 @Entity public class Customer { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int customerId;

我想编码三个独立的微服务“CustomerMicroService”“CartMicroService”“OrderMicroService”,然后我想通过Spring云连接它们(代理模式和服务发现模式)。但我已经遇到了另一个问题:微服务之间的相互依赖性

@Entity
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int customerId;

    private String name;
    private String address;

    @OneToOne
    @JoinColumn(name = "CART_ID")
    private Cart cart

    @ElementaryCollection
    private Map<Integer, Order> orders;


    public Customer(Cart cart) {
        this.cart = cart;
    }
@实体
公共类客户{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人int客户ID;
私有字符串名称;
私有字符串地址;
@奥内托内
@JoinColumn(name=“购物车ID”)
私家车
@元素集合
私人地图订单;
公共客户(购物车){
this.cart=购物车;
}

如果我将另一个微服务的类复制到另一个微服务中,这个例子会起作用。但是现在我只会得到很多异常,因为如果我只想执行一个微服务,Spring Data JPA将无法找到另一个微服务的类。我该如何处理呢?

Imho,您的服务没有正确隔离。微服务应该是自包含的,即如果
客户
没有
购物车
,则它们属于同一个微服务。但是,如果您只需要
订单
中客户的一些信息,则
订单
微服务应该从<代码>客户服务。@Turing85但我认为它不会是一个“商店”在最后的微服务中,当客户和购物车在一个微服务中时?我并没有说他们应该在一个微服务中。我只是说如果他们需要紧密耦合的话,他们应该在一个微服务中。名字
Customer
对我来说似乎已经不合适了。应该是
User
(即,它包含更多信息,如身份验证方法、尼克、真实姓名、电子邮件、邮政地址等)。仅此一项就可以包含至少两项服务(实际用户服务和AuthenticateIn服务,将至少一种身份验证方法映射到每个用户)。然后,cart服务只保存/复制它所需的用户信息。@Turing85如果我只将cartId存储为变量和外键,您认为这是一个解决方案吗?快速问题:您对所有微服务都使用单一数据库服务吗?嗯,您的服务没有正确隔离。微服务应该是自助的包含,即如果
客户
没有
购物车
就不能正常工作,那么他们属于同一个微服务。但是,如果您在
订单
中只需要
客户
的一些信息,那么
订单
微服务应该从
客户
服务中冗余地保存这些数据。@Turing85但我认为当客户和购物车在一个微服务中时,它最终不会是一个微服务的“商店”?我并没有说它们应该在一个微服务中。我只是说如果它们需要紧密耦合的话,它们应该在一个微服务中。对我来说,
Customer
这个名字似乎已经不合适了。它应该是类似于
User
(即,它包含更多信息,如身份验证方法、尼克、真实姓名、电子邮件、邮政地址等)。仅此一项就可以包含至少两项服务(实际用户服务和AuthenticateIn服务,将至少一种身份验证方法映射到每个用户)。然后,cart服务只保存/复制它需要的用户信息。@Turing85如果我只将cartId存储为变量和外键,您认为这是一个解决方案吗?快速问题:您是否对所有微服务使用单一数据库服务?