如何在 spring-boot 中的微服务中创建 Super/Base/Parent 类 - 在子类中扩展该类

Posted

技术标签:

【中文标题】如何在 spring-boot 中的微服务中创建 Super/Base/Parent 类 - 在子类中扩展该类【英文标题】:How to make Super/Base/Parent class in microservices in spring-boot - to extend that class in child class 【发布时间】:2019-10-16 19:36:57 【问题描述】:

1) 我有 3 个微服务项目(Country-micro、State-micro 和 City-micro),每个微服务分别定义了 3 个实体 Country、State 和 City。请注意,所有 3 个微服务在 pom.xml 中具有相同的组 id

所有实体都有共同的4个字段

    身份证 创建日期 修改日期 is_active

如何为上述字段创建基础实体类并在不同的微服务中使用它。就像,在单体架构中,我们可以通过扩展此处定义的类来轻松使用:

我的基类

@MappedSuperclass
@Data
public class BaseEntity 
    private Long id;
    private Date created_date;
    private Date modified_date;
    private Boolean is_active;


我的孩子班

@Entity
@Data
@EqualsAndHashCode(callSuper=false)
@Table(name="tbl_country")
public class Country extends BaseEntity 
    private String countryName;
    private String countryCode;

但是,在微服务架构中,所有实体都是分开的。那么,如何将服务定义为 Super 类。

2) 对于上面同样的问题,我也想在每个微服务中使用我的常量类。就像,在整体结构中,我们可以:

public interface Constants 
    static String HTTP = "http";
    static String COMMA_AND_SPACE = ", ";

并且可以在任何类中使用此常量,例如:

public String myMethod(MyDto myDto) 
    StringBuilder sb = new StringBuilder();

    sb.append("My First String").append(Constants.COMMA_AND_SPACE);
    sb.append("My Second String").append(Constants.COMMA_AND_SPACE);

我可以在哪个服务中定义常量,我应该创建单独的服务吗?或者我必须在每个微服务中定义相同的常量(比如代码冗余)。我也以同样的方式在整体结构中使用 Utility 类。

请解释结构或指导我定义基类或 Utils。

提前谢谢你。

【问题讨论】:

当你说 3 个微服务 => 你的意思是 3 个不同的微服务项目或同一个项目中的 3 个不同的微服务 API? @MyTwoCents - 我已经实现了 3 个不同的微服务项目。在 pom.xml 中,所有 3 个微服务都具有相同的 Group id。 【参考方案1】:

您可以创建一个新模块为Common 并将所有常用代码放入其中。

只需在 pom.xml 中所需的任何项目中添加它的依赖项即可。

因此,即使您单独运行Microservice1,您也必须在其中绑定 Common 模块。

例如在Microservice1 pom.xml 添加公共依赖

<dependency>
    <groupId>com.sample.common</groupId>
    <artifactId>Common</artifactId>
    <version>$project.version</version>
</dependency>

可以read this as well

【讨论】:

感谢您的快速回复。我有了构建结构的想法。我还查看了 SO 链接 ***.com/questions/35223505/…

以上是关于如何在 spring-boot 中的微服务中创建 Super/Base/Parent 类 - 在子类中扩展该类的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS 中创建环境变量(空格)?

Eclipse中创建新的SpringBoot项目(打包并且部署到tomcat)

基于docker部署的微服务架构(二): 服务提供者和调用者

我的Android进阶之旅如何在Retrofit2 中创建动态 URL?

如何设计一对多的微服务数据库?

如何解决tomcat的问题? Spring-Boot“扫描失败”