当前位置: 首页 > 知识库问答 >
问题:

通用更新服务或模块的Spring设计模式

荀正谊
2023-03-14

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

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

提前感谢。

共有1个答案

何高旻
2023-03-14

去年,我考虑了与您类似的概念,但在Apache Camel框架环境中。我没有足够的时间和动力这么做,但你的帖子鼓励我试一试——可能主要是因为我发现你的概念与我的非常相似。

我是这样看的:

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

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

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

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

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

 类似资料:
  • 5.1版本默认采用多模块的架构,并且支持单一模块设计,所有模块的命名空间均以app作为根命名空间(可通过环境变量更改)。 目录结构 标准的应用和模块目录结构如下: ├─application 应用目录(可设置) │ ├─common 公共模块目录(可选) │ ├─module1 模块1目录 │ │ ├─common.php

  • 由于我正在学习通过设计模式的概念,也希望实现支付模块在我的项目中使用适当的设计模式。为此,我创建了一些示例代码。 目前,我有两个具体的实现支付和。但具体实施将在项目上进一步补充。 支付服务 信用卡和付费朋友服务 客户端代码实现 此更新是否与策略模式内联?

  • 我正在从事一个Spring Boot服务项目,在这个项目中,我们有多个spring服务bean,它们相互自动连接。 例如: 大多数服务bean自动连接到另一个服务bean中,同时将其相应的存储库bean与其他一些bean(ModelMapper、一些应用程序上下文bean)自动连接,有时这会导致循环依赖性问题,有时会导致代码质量检查失败,因为通过构造函数注入自动连接的bean超过9个。 我的问题是

  • 本文向大家介绍javascript设计模式之module(模块)模式,包括了javascript设计模式之module(模块)模式的使用技巧和注意事项,需要的朋友参考一下 模块是任何强大应用程序中不可或缺的一部分,它通常能帮助我们清晰地分离和组织项目中的代码单元。 js中实现模块的方法:  1.对象字面量表示法  2.Module模式  3.AMD模块  4.CommonJS模块  5.ECMAS

  • 问题内容: 我最近正在读《 学习JavaScript设计模式》 这本书。我没有得到的是模块模式和显示模块模式之间的区别。我觉得他们是同一回事。有人可以举一个例子吗? 问题答案: 至少有三种不同的方法来实现模块模式,但是显示模块模式是唯一具有正式名称的模块模式后代。 基本模块模式 模块模式必须满足以下条件: 私有成员住在封闭中。 公共成员暴露在返回对象中。 但是这个定义有很多歧义。通过以不同方式解决

  • 问题内容: 到目前为止,我已经看到了许多解决问题的方法。当然,最简单的方法是将事件作为事件总线使用,例如(https://github.com/btilford/anti- patterns/blob/master/angular/Angular.md ) 问题是: 在角度应用中使用第二个有什么意义吗? 彼此之间的优缺点是什么? 问题答案: 在编写AngularJS应用程序时,创建自己的事件发射器