[英]Design pattern for Multiple services beans in SPring boot
我正在研究一个 spring 引导服务项目,我们有多个 Spring 服务 bean,它们相互自动连接。
例如:
@Service
public class Service1
@Autowire
Service2, Service3
.
.
.
@Service
public class Service5
@Autowire
Service 4, Service 1
@Repository
public interface Service1Repository extends JpaRepository<Entity1, UUID>
.
.
.
@Repository
public interface Service5Repository extends JpaRepository<Entity5, UUID>
大多数服务 bean 都自动连接到另一个服务 bean,同时将它们相应的存储库 bean 与其他一些 bean(ModelMapper,一些应用程序上下文 bean)自动连接在一起。有时这会导致循环依赖问题,有时它会在代码质量检查中失败通过构造函数注入自动装配了 9 个以上的 bean。
我的问题是,是否有最佳实践或设计模式来构建这些应用程序 spring bean?
我不能确切地说,因为我不知道这些服务到底在做什么。 但看起来您有许多作为服务公开的“事务脚本”,即您在每个服务中都有一个自上而下的程序类型的计算。 并且在某些时候,开发人员看到了服务中的重复,并决定在它们之间自动连接。
服务层基本上可以充当事务脚本,或者将域对象连接在一起并将它们公开给 controller 或其他层。 话虽如此,可以在其他服务中注入服务,但是它们太多了,正如您所说,循环依赖似乎是一个问题。
我最好的猜测是,该项目最初是一个事务脚本,但现在它发展成为需要域 model 的东西。 也许您应该尝试识别与业务逻辑相对应并且可以在不同服务之间重用的对象。 这应该会减少服务的数量。
这将是一个架构问题而不是设计问题。
如果不了解更多关于服务的性质,就不能说太多。
我的建议如下:
您的问题没有详细说明这些服务的目的是什么。 如果您评估策略、工厂、构建器或复合设计模式是否对您的案例有帮助,那将是有益的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.