微服务架构:六边形与洋葱架构实践
1. 重温六边形架构
在实践中,我们复用了之前的六边形微服务视图,但这次使用 CrudRepository
替代 MongoRepository
。其目的是展示如何通过合适的适配器,让通用端口(这里指使用 CrudRepository
的驱动端口)连接到不同类型的数据库,具体示例中是连接到 MongoDB 数据库。
此外,引入了 ProductOR
实体,目的是展示在使用端口和适配器架构时,能最大程度地复用核心实体和业务服务。也就是说,会保留并复用之前示例中的 Product
实体,以证明在运行时可以插入不同的驱动适配器。
2. 代码理解
代码可在 GitHub 上获取,示例代码位于 ch03\ch03 - 02
文件夹中。首先来看提供者微服务,即 Product Server
微服务。
2.1 ProductRepository
接口
@RepositoryRestResource(collectionResourceRel = "productdata",
path = "productdata")
public interface ProductRepository extends
CrudRepository<ProductOR, String> {