常见更新服务或模块的Spring设计模式

时间:2018-04-06 06:03:38

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

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

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

服务如下: enter image description here

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

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

这就是我的看法:

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

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

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

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

在接下来的步骤中,我想将这些处理器外部化,因此这些是可插入的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