将用户界面(UI)作为springboot中的不同微服务

时间:2018-09-20 14:22:15

标签: java spring spring-boot microservices pojo

我有多个微服务,每个微服务用于特定的任务/活动。我正在使用UREKA以及网关服务。

因此,我的问题是我是否应该具有可以处理所有微服务的UI活动的其他UI微服务? 还是我应该由相应的微服务来处理UI部分?

是的,这个问题的答案是业务需求。

我需要的是我应该具有不同的UI微服务。 因此,再次出现以下架构问题,请帮助解决该问题。

UI微服务:用户发出HTML请求,请求绑定到适当的对象,例如Employee POJO。我将处理该pojo中的所有UI验证以及控制器中的其他自定义验证。
成功验证后,我向Employee Microservice进行了假冒API调用以保存员工对象。

员工微服务:此微服务将仅包含RestController,因为此处没有UI活动。上述调用由适当的控制器接收,并将Employee对象绑定到Employee Microservice的Employee对象中。 然后,该员工对象传递到服务层,并转换为适当的JPA,并保存到数据库中。

请参阅此处,我的Employee类在UI微服务和Employee微服务中重复。 这是我的问题,我们如何消除重复的Employee类? 当我的UI微服务处理所有其他微服务的UI部分时,我的所有微服务POJO将在UI服务中进行复制,从而进行开销修改任务和重复操作。 一种解决方案是将UI微服务的Employee对象绑定到其他服务的JPA Pojo直接,但是我不想在服务层之前公开JPA POJO。还是这是个好方法?

有解决方案吗?有设计模式吗?

1 个答案:

答案 0 :(得分:0)

  

UI微服务或服务或应用程序,无论是什么还是问题   重复的POJO是我的关注

如果这是您唯一关心的问题,是的,这就是微服务,代码重复的诅咒。

您有创造性的方法来解决此问题

  1. 通过发布具有所有共享POJO的jar

OR

  1. 将所有代码库都放在一个monorepo中,并作为单独的jar进行构建(恭喜,尽管您的应用程序将是微服务,但您现在拥有一个整体的代码库)。

恕我直言,不要只挂在那里。如果您的微服务A是用JVM语言编写的,而微服务B是用go语言编写的,那该怎么办。您不能在那里共享任何类型的类(AKA POJO)。

顺便说一句,我不会有UI微服务。我宁愿有一个单页应用程序(例如Angular / React / Vue / Yet-another-javascript-framework)