如何在 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 类 - 在子类中扩展该类的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse中创建新的SpringBoot项目(打包并且部署到tomcat)
基于docker部署的微服务架构(二): 服务提供者和调用者