【发布时间】:2012-01-13 18:21:07
【问题描述】:
有没有关于提供集成挂钩的建议、最佳实践或好的文章?
假设我正在开发一个基于网络的订购系统。最终,我希望我的客户能够编写一些代码,将其打包到 jar 中,将其转储到类路径中,这将改变软件的行为方式。
例如,如果有订单进来,代码
1. 可以发送电子邮件或短信
2.可能会向数据库中写入一些额外的数据
3.可能会更改数据库中的数据,或者决定不将订单保存到数据库中(取消数据保存)
第 3 点非常危险,因为它过多地干扰了数据完整性,但如果我们希望集成如此灵活,是否可行?
到目前为止的选项
1. 为特定操作提供钩子,例如如果发生这种情况,调用这个方法,客户端会为那个方法编写实现,但是这太死板了
2. 类似servlet过滤器的机制,实际动作执行前有代码,执行后有代码,虽然不太清楚怎么设计
如果这很重要,我们正在使用 Struts2。
这种集成必须能够检测到“状态变化”,而不仅仅是核心操作执行后的“结束状态”。
例如,如果订单将状态从 In Progress 更改为 Paid,那么它会做一些事情,但如果它从 Draft 更改为 Paid,它不应该做任何事情。
在这种情况下,核心操作是从数据库,将状态更改为已付费,然后再次保存(或执行 sql 更新)。
【问题讨论】:
标签: java jakarta-ee architecture struts2 integration