java - 如何处理与微服务无关的类对象?

标签 java spring-boot object microservices encapsulation

我正在尝试使用 Spring Boot 将单体系统划分为微服务。我遇到的问题是,虽然每个微服务通常应该具有实现服务功能的类,但我需要接收和处理封装与其他微服务相关的许多类的对象。例如,下面的代码是 microservice1 的一部分,它提供学生信息:

class Microservice1{

int id;
String name;
int grade;
Record record;

}

现在请注意,Record对象属于另一个微服务的类,该微服务是microservice2,它提供学生记录,如下所示:

class Microservice2{

List<int> marks;
Behaviour behaviour;

}

现在行为也是另一个对象,其类属于另一个微服务3,依此类推。

我的问题是:如何解决必须将所有这些类包含在微服务 1 中的问题,因为微服务 1 在提供服务时需要处理它们?问题很严重,因为我有许多相互封装的类,并且我需要将大多数单体系统类包含在一个微服务中。

最佳答案

据我所知,您的微服务过于细化。以这种方式实现你会遇到很多麻烦。

恕我直言,如果记录学生相关并且属于同一个业务上下文,它们属于同一个微服务。

正如 David 在评论中所说,限界上下文概念可以(真正)帮助您。

无论如何,想象一下您想要遵循您所提议的路线。如果一个 Record 属于微服务 B,并且您必须通过微服务 A 中的某个位置组合来引用它,那么您唯一需要的就是它的主键。不是整个对象。

会是这样的:

微服务A:

Student.java

public class Student {

    private Integer id;
    private String name;
    private Integer grade;
    private Integer recordId;

    // getters and setters omitted for brevity
}

微服务B:

Record.java

public class Record {

    private Integer recordId;
    private List<Integer> marks;
    private Integer behaviourId;

    // getters and setters omitted for brevity
}

等等..

但正如我所说,也许这不是最好的方法。

参见here关于有界上下文的好文章。

关于java - 如何处理与微服务无关的类对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59878104/

相关文章:

java - 如何使用java检查系统中是否安装了outlook?

java - 无法在 Spring 中初始化 bean 类

Java lambda : Expected Object but found MyClass

objective-c - 创建的对象数量

java - 如何从Eclipse运行Javac

java - primefaces 可以在数据表行编辑单击上调用监听器吗?

java - 如何将变量从 yaml 文件读取到 application.properties 中?

java - spring boot连接池理解

c++ - 如何从C++中的嵌套类调用变量

java - 通过 iframe 加载时文件保存对话框出现两次