Java 关于提供集成api的建议
是否有关于提供集成挂钩的建议、最佳实践或好文章?Java 关于提供集成api的建议,java,jakarta-ee,architecture,struts2,integration,Java,Jakarta Ee,Architecture,Struts2,Integration,是否有关于提供集成挂钩的建议、最佳实践或好文章? 假设我正在开发一个基于web的订购系统。最后,我希望我的客户能够编写一些代码,将其打包到一个jar中,并将其转储到类路径中,从而改变软件的行为方式。 例如,如果收到订单,则代码 1.可以发送电子邮件或短信 2.可能会将一些附加数据写入数据库 3.可能更改数据库中的数据,或决定不将订单保存到数据库中(取消数据保存) 第3点非常危险,因为它对数据完整性的干扰太大,但如果我们希望集成变得如此灵活,它可行吗? 迄今为止的选项 1.为特定的操作提供钩子
假设我正在开发一个基于web的订购系统。最后,我希望我的客户能够编写一些代码,将其打包到一个jar中,并将其转储到类路径中,从而改变软件的行为方式。
例如,如果收到订单,则代码
1.可以发送电子邮件或短信
2.可能会将一些附加数据写入数据库
3.可能更改数据库中的数据,或决定不将订单保存到数据库中(取消数据保存)
第3点非常危险,因为它对数据完整性的干扰太大,但如果我们希望集成变得如此灵活,它可行吗?
迄今为止的选项
1.为特定的操作提供钩子,例如,如果发生这种或那种情况,调用此方法,客户端将为该方法编写实现,尽管这太严格了
2.机制类似于servlet过滤器,在执行实际操作之前有代码,在执行之后有代码,但不太确定如何设计它
如果有必要,我们将使用Struts2。
这种集成必须能够检测到“状态变化”,而不仅仅是核心操作执行后的“结束状态”。
例如,如果订单将状态从“进行中”更改为“已付款”,则它将执行某些操作,但如果订单从“草稿”更改为“已付款”,则它不应执行任何操作。
这种情况下的核心操作是从数据库加载订单对象,将状态更改为“已付款”,然后再次保存(或执行sql更新)。
许多选项,包括:
- 工作流工具
- AOP
- 消息传递
- DB层挂钩