六边形架构中如何使用Spring缓存?

问题描述 投票:0回答:2

在六边形架构中,领域层与框架没有依赖关系。

领域层可以使用Spring缓存吗?

java caching domain-driven-design spring-cache hexagonal-architecture
2个回答
2
投票

六边形架构将领域逻辑与基础设施隔离,如数据库、搜索引擎、消息队列、邮件投递、缓存系统等。该域没有任何基础设施和框架样板。 只有

Infrastructure Layer
必须包含Spring Cache的实现细节。它是通过依赖倒置原则实现的,使类依赖于抽象(接口或抽象类)而不是具体类。这意味着依赖的类不知道它将使用的具体类,它没有对其依赖的类的完全限定类名的引用。高层模块不应该依赖于低层模块。两者都应该依赖于抽象。抽象不应该依赖于细节。细节应该取决于抽象。


让我们回顾一下缓存有意义的几种实现。
存储库级别缓存
您可以在

Domain Layer
中定义存储库契约,并且必须在定义持久性和Spring Cache详细信息的
Infrastructure Layer
中完成实现。域不会知道有关缓存系统的详细信息,但会通过存储库实现来使用它。存储库的每个客户端都将使用缓存。
应用层缓存
应用服务是关于用例的。此级别上的实现缓存使您可以更好地控制要使用缓存的位置和时间。您可以在
Application layer
定义 Cahce Manager 合约,并在
Infrastructure Layer
执行实施细节。它还可以像服务的代理或装饰器一样完成,您将在其中应用 Spring Cache 注释。


2
投票

缓存是一个应用程序概念,而不是一个业务概念:您可以为同一业务编写另一个不涉及缓存的应用程序。在六边形架构中,缓存应该放在适配器层,而不是域层。

© www.soinside.com 2019 - 2024. All rights reserved.