- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 Spring 集成框架开发一个简单的 Spring Web 应用程序。我已经了解了企业集成模式、目的、优点...我已经摆脱了 ServiceLayer 并将应用程序工作流程委托(delegate)给集成框架。但我遇到了一些设计问题,我陷入困境,我希望能在设计方面得到一些启发。下面我将尝试解释它们,提前致谢。
<强>1。使用 Spring Integration Framework 进行 CRUD 操作
假设您有 2 个通过直接 channel 连接的端点,1 个端点接收请求,另一个端点处理这些请求。我不想从实现的角度来讨论,而是从设计的角度来讨论(正如我之前所说的),但为了澄清这一点,想象一下,您将接收端点实现为连接到网关的 RestController,将另一个端点实现为连接到网关的 RestController。 ServiceActivator 连接到数据库适配器。现在,用户可以请求 4 种基本操作:创建、读取、更新和删除(基本 CRUD)。由于接收方端点只能执行一种方法(handleMessage 方法),那么多路复用这 4 个操作的正确方法是什么?
<强>2。使用 Spring Integration Framework 在端点之间共享事件
假设您有一个连接到转换器的网关。转换器会初始化一个线程,在该线程中解析一些数据,并在完成后将其发送到下一个端点。现在,网关客户端需要知道它通过 channel 发送的请求的状态(因为网关对 Transformer 或其实现一无所知,所以它们不应该共享任何内容)。既然转换器只有 1 个入站 channel 和 1 个输出 channel ,并且无法通过第三个 channel 将结果发布回来,那么如何实现呢?本质上,问题是,如何在不耦合端点或破坏集成模式架构的情况下共享事件?P.D.:请避免没有明确的答案,例如静态共享对象,谢谢。
最佳答案
嗯嗯嗯。您的担忧不知何故不清楚。
当你以前有一个ServiceLayer时,我很确定很多特定操作的方法不会打扰你。因此,不知道当您切换到消息传递架构时,为什么您如此担心消息 channel 区分操作。
同时我猜想 @Cotroller
与 GET
、POST
、DELETE
等 @RequestMapping
因为它的方法不再让你担心。
在端点之间的 MessageChannel
面前,应用程序中存在额外的对象会带来一些不便。但同时,当您开始将应用程序视为一堆消息流时,这是一个好处,其中每个消息流都是分开的 MessageChannel
并且您可以修改任何流而不影响任何其他流。另外,不要忘记,使用 MessageChannel
,当您的业务逻辑相同,但消息通过网络传输以用于目标服务或其他目的时,您只需进入分布式模式即可。
因此,IMO 我有 @MessagingGateway
从 @Controller
调用,每个网关的方法将映射到特定的 MessageChannel
。
由于注释模型,您可以只有一个目标服务,但每个 CRUD 操作的方法都用 @ServiceActivator
标记为特定的 MessageChannel
:
@MessagingGateway
public interface CrudGateway {
@Gateway(requestChannel = "getChannel")
Object get(Object id);
@Gateway(requestChannel = "saveChannel")
Object save(Object object);
@Gateway(requestChannel = "deleteChannel")
boolean delete(Object object);
}
...
@Service
public class CrudService {
@ServiceActivator(inputChannel = "getChannel")
public Object get(Object id) {
// SELECT
}
@ServiceActivator(inputChannel = "saveChannel")
public Object save(Object object) {
// INSERT or UPDATE
}
@ServiceActivator(inputChannel = "deleteChannel")
public boolean delete(Object object) {
// DELETE
}
}
对于你的第二个问题,也有一些答案。
考虑使用 PublishSubscribeChannel
作为该转换器
的输出。
另一方面,有 RecipientListRouter
将传入消息分发给多个收件人 - 当然是 channel 。
关于java - Spring集成疑问: CRUD operations and sharing events between components,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41612131/
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我刚刚发现了这门语言,我想知道是否可以使用数据库制作基本的 CRUD 网络应用程序。 最佳答案 有 mysql 的库和 postgresql , 核心库提供了一个 web server支持 HTTP、
Symfony 4.0 发布后,不再支持 SensioGeneratorBundle .因此命令 php app/console generate:doctrine:crud不可用。 他们建议使用 M
在开发 Web 应用程序时,我通常会看到人们执行增删改查和同步 View 的两种方式。 这里是使用 ajax 的高级示例。 1-方法一 创建操作可能涉及 POST 请求,成功后只需执行另一个 GET
我已经成功地使用 Yii2 模型和 CRUD 生成器为我的网络应用程序获取了一些框架代码文件。特别是,CRUD Generator 声称已成功将其 View 文件创建到: /basic/views//
在我的项目中,我一直在使用 Django 的通用 CRUD View 来处理很多事情。我现在想开始迁移到 DJango 1.3 中基于类的新样式通用 CRUD View 。我没有发现这些文档有多大帮助
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题?通过 editing this post 添加详细信息并澄清问题. 7年前关闭。 Improve this
我希望标题不要太含糊,所以这里是: 我创建了一个 MySQL 数据库,其中存储了两个表:一个包含输入数据,另一个包含输出数据。 之后我编写了一个程序,连接到这个特定的数据库,从输入表中提取数据,解析它
我需要编辑我的实体以获得更多值。我已经用我之前的值生成了 crud。如何在编辑实体后通过应用程序/控制台重新生成 crud,以便它自动为其他值生成函数。 最佳答案 为此,您需要删除为此 crud 生成
因此,我仅使用 JavaScript 创建了一个简单的 CRUD 应用程序。现在,您可以将国家/地区添加到数组中并从数组中删除国家/地区。我希望能够编辑数组中的现有国家/地区,例如我想将“斯德哥尔摩”
我想让java中的一个类有一个可以与Hibernate配置交互并执行某些操作的方法,该方法被标识为ENUM(例如:读取,更新,添加,删除等) 方法参数应为(枚举操作、类 DTO、NamedQuery
我正在构建一个 React 应用程序,并使用 auth0 来登录/验证用户。 在使用 auth0 之前,我一直在对 API 进行 CRUD 调用来发布帖子。这又是在使用 auth0 之前、在我拥有用户
尝试使用 BlueJ 构建我的第一个 Java MySQL CRUD 应用程序。我可以运行该应用程序并将数据写入 MySQL 数据库。但是,当我运行搜索函数时,我得到了 Java .NullPoint
我正在试用 Microsoft Master Data Services,我想以编程方式将数据添加到数据库中。我开始获得模型/实体/成员结构,但我还不确定。如果您对此结构有很好的解释,请分享。 假设有
我正在尝试开发一个 Backbone Marionette 应用程序,我需要知道如何以最佳方式执行 CRUD(创建、读取、更新和销毁)操作。我找不到任何解释这一点的资源(仅适用于 Backbone)。
我已经根据文档和 medium article 模拟了与 Room 的多对多关系。 .使用这个@Relation,我可以从数据库中检索RecipeWithIngredients 或Ingredient
Closed. This question is opinion-based。它当前不接受答案。 想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 3年前关闭。
通过AngularJS通过REST进行CRUD操作的最佳实践是什么? 特别是这里的 Angular-Way 。我的意思是使用最少代码和最默认 Angular 设置来达到此目的的方式。 我知道$ res
我无法弄清楚我的更新功能。我能够从数据库中检索和删除,但我不知道如何更新。这对我来说是全新的,所以我很困惑。 .js 文件 //update user $("#btnUpdateUser").clic
我正在寻找一种对用户透明的 CRUD 操作后重新加载页面的方法。 实际上,在创建或删除之后,我必须重新加载页面才能显示我的操作。 我使用 api 来实现这个,当我将它与 json 文件一起使用时,它工
我是一名优秀的程序员,十分优秀!