问题描述
我有一个场景,我希望根据 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 代码仍然需要编译。最后,当我们为客户发布一些解决方案时,他们的操作员如何编写这些动态流变得非常混乱,容易出错。
你当然可以有一些外部配置选项,也可以有条件逻辑,但代码仍然必须提前编译,不能让逻辑(不是数据)在运行时被序列化和反序列化。
可能这不是您正在寻找的答案,但是没有这样的序列化解决方案,并且可能根本不会完成,因为如今拥有动态应用程序是一种反模式(恕我直言)我们可以简单地处理简短的微服务甚至函数。