gpt4 book ai didi

java - 以我们需要多次创建相同上下文的方式设计 Spring 应用程序是最佳实践吗?

转载 作者:行者123 更新时间:2023-12-01 21:30:41 24 4
gpt4 key购买 nike

我将使用 Spring 框架启动一个新项目。由于我在 Spring 方面没有太多经验,我需要你的帮助来解决一些困惑。

让我们看看用例

我的应用程序使用 Spring 集成框架。我的应用程序的核心功能是,

  1. 我需要从文件系统轮询多个目录,
  2. 读取文件(主要是 csv),
  3. 对它们进行一些操作并将它们插入数据库。

目前我已经为其设置了 Spring 集成流程。其中有inbound-chaneell-adapter用于轮询,然后文件遍历 channel 并最后插入数据库。

我担心的是

  1. 应用程序应该轮询的目录数量将在运行时决定。因此我需要创建 inbound-chanell-adapter在运行时(因为一个 chanell 适配器一次只能轮询一个目录)并且无法在我的 spring context xml 中静态定义它们(因为我不知道我需要多少个目录)。

  2. 每个目录都有某些属性,应在处理时应用于文件。(在执行集成流程时)

  3. 所以现在我正在做的是加载 new ClassPathXmlApplicationContext("/applicationContext.xml");对于每个目录。并在新创建的上下文中缓存所需的属性。并在处理时使用它们(在 <int:service-activator> 中)。

当前设计的缺点

  1. 为每个目录创建单独的上下文。
  2. 不必要的 bean 会重复。 (数据库 session 工厂等)

有没有什么方法可以设计应用程序,使上下文不会重复。而且我仍然可以在整个集成流程中同时使用每个目录的属性???

提前致谢。

最佳答案

请参阅dynamic ftp sample以及其自述文件中有关在需要时创建子上下文的链接,其中包含新的入站组件。

另请参阅我对 similar question for multiple IMAP mail adapters using Java configuration 的回答然后是 follow-up question .

您还可以使用消息源建议在每次轮询中重新配置 FileReadingMessageSource 以查看不同的目录。请参阅Smart polling .

关于java - 以我们需要多次创建相同上下文的方式设计 Spring 应用程序是最佳实践吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37483725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com