您如何使用 JPA 数据库表动态管理 IntegrationFlow Spring bean?

问题描述

我有一个场景,我希望根据 JPA 数据库表的内容注册 IntegrationFlow Spring bean。

例如,表格将如下所示:

@Entity
class IntegrationFlowConfig {
  private long id;
  private String local;
  private String remote;

}

并且我想要一个 IntegrationFlow 注册为 Spring bean,用于在上表定义中找到的每个条目。添加一行时,注册一个新的bean,删除一行时,销毁相应的bean。

我考虑过为上述实体创建一个EntityListener,其中@PostPersist 和@PostRemove 将通过IntegrationFlowContext 创建/销毁IntegrationFlow bean,但是这个解决方案似乎有点笨拙,我想知道是否存在任何功能解决上面的问题稍微简化了一点。也许某种行映射功能可以将 spring bean 映射到 JPA 数据库行等?

任何帮助将不胜感激!

谢谢,

和尚

解决方法

嗯,这样的想法过去曾多次出现在我的脑海中。但是即使将 XML 配置轻松序列化为数据库并反序列化为 Integration Flow(XML 之一)在其自己的子 ApplicationContext 中,我们仍然遇到了一些 bean 必须随其 Java 提供的问题代码。即使我们选择退出 Groovy scripts,它可以在运行时解析和加载,一些 Java 代码仍然需要编译。最后,当我们为客户发布一些解决方案时,他们的操作员如何编写这些动态流变得非常混乱,容易出错。

你当然可以有一些外部配置选项,也可以有条件逻辑,但代码仍然必须提前编译,不能让逻辑(不是数据)在运行时被序列化和反序列化。

可能这不是您正在寻找的答案,但是没有这样的序列化解决方案,并且可能根本不会完成,因为如今拥有动态应用程序是一种反模式(恕我直言)我们可以简单地处理简短的微服务甚至函数。