微服务间高效共享实体类
在微服务架构中,不同微服务之间共享实体类是常见需求。例如,“appcity”微服务中有“city”实体类,“appcountry”微服务中有“country”实体类。当需要在“appcountry”中访问“appcity”的“city”实体类时,就需要解决共享实体类的问题。
通常,在微服务架构中,不会将所有实体类都放置于一个公共模块中。这样会造成模块间耦合度过高,不利于微服务的独立性。
更推荐的做法是创建一个共享模块,包含所有微服务都需要共享的实体类。该模块可以被打包成jar包,并由各个微服务引入。
共享模块中的实体类
在共享模块中,实体类的定义方式通常如下:
@entity public class city { ... }
调用其他微服务中的实体类
在需要访问其他微服务实体类时,可以使用feign客户端来调用相应的微服务,并使用自定义的响应类封装返回结果。
例如,在“appcountry”微服务中,可以定义一个接口来调用“appcity”微服务中的“city”实体类:
public interface CityService{ // CommonResponse是自定义的响应类 CommonResponse<City> getCityInCountry(City condition); }
通过这种方式,就可以在“appcountry”微服务中访问和使用“appcity”微服务的“city”实体类,实现微服务间实体类的共享。