【问题标题】:Spring design pattern for common update service or module通用更新服务或模块的 Spring 设计模式
【发布时间】:2018-04-06 06:03:37
【问题描述】:

我有一个用例,我想构建一个可以更新应用程序实体的通用接口或服务。示例案例如下图所示:

现在每个应用程序都必须处理实体的更新功能。而不是在 n 应用程序模块中实现更新功能。我想在spring boot中构建一个通用的接口或服务器。

服务如下:

我的问题是如何设计可用于上述场景的服务/接口。任何可以帮助我实现这一目标的 api 或工具。我不想在每个应用程序模块中编写更新代码。

提前致谢。

【问题讨论】:

    标签: spring spring-mvc design-patterns spring-data


    【解决方案1】:

    去年我在考虑与您类似的概念,但在 Apache Camel 框架上下文中。我没有足够的时间和动力这样做,但你的帖子鼓励我尝试一下——也许主要是因为我发现你的概念与我的非常相似。

    这就是我的看法:

    所以基本上我考虑了一个应用程序的环境,它可能使用 N 个模块/插件来丰富应用程序的功能,即处理功能等。应用程序在类路径中可用时使用模块/插件 - 考虑到 Java 背景。当模块不可用时,应用程序在没有它的功能的情况下工作,就像它从未存在过一样。此外,我想纯粹使用框架功能(在本例中为 Spring)来实现它,而源代码中没有丑陋的 hacks/ifs。

    我想到了三个解决方案: - 使用请求/响应拦截器和修改(@ControllerAdvice) - 使用 Spring AOP 拦截 *Service 代理类中的方法调用 - 使用 Apache Camel 框架创建处理实体的路由

    以下是我实施的 POC 的简要概述:

    • 我选择了 Spring AOP,因为我以前从未单独使用过它。
    • 模拟保存员工的简单EmployeeService - EmployeeEntity
    • 3 个处理器模拟可能位于应用程序外部的处理模块。这三个模块以某种方式改变了 EmployeeEntity 的属性。
    • 拦截 EmployeeService 中的“保存”方法并处理可用处理器调用的一个方面

    在接下来的步骤中,我想将这些处理器外部化,因此这些是某种可插入的 jar 文件。

    我想知道这是否是您想要实现的目标?

    这里是Spring AOP介绍的链接:https://docs.spring.io/spring/docs/5.0.5.RELEASE/spring-framework-reference/core.html#aop

    提到的 POC 存储库的链接:https://github.com/bkpawlowski/spring-aop

    【讨论】:

      猜你喜欢
      • 2021-04-26
      • 2012-11-26
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多