【发布时间】:2015-07-01 15:23:22
【问题描述】:
我们有一个基于 spring 的应用程序,它有 2 个级别的可运行文件: 父级(调度程序)和子级(加载程序),其中在 ThreadPoolExecutor 中运行的每个父级都有一组子级(同样在 ThreadPoolExecutors 中),这些子级需要一组父级特定值(它们当前通过调用 parent.getSomeProperty() 获得)
我的问题是:如何自动装配单亲及其子女使用的 bean?或者有没有办法让这些孩子知道他们的“会话”/“上下文”之类的说法(可以是通过散列“某物”获得的简单 ID?
示例用例:
- 每个调度程序都有一组加载程序引用的用户属性(如用户 ID、3rdParty 令牌/密码、计数器、isAborted..等)
- 加载程序从第 3 方不同端点获取数据并生成通用对象(其属性来自父级和第 3 方)并将它们放入单个 FastMap (Javolution) 中,由另一个执行 DB INSERT/UPDATE 的 bean 批量使用另一个线程
我目前正在将调度程序“父级”传递给它的所有子级,这使得使用 AppContext.getBean(...) 然后设置公共值/传递父级变得静音。
【问题讨论】:
-
与其将子节点耦合到父节点,您是否考虑过将参数封装到某种上下文对象中并将其传递给子工作者,可能使用队列?
-
同样的问题:孩子使用的地图共享“上下文”的关键是什么?或者,传递它与将指针传递给父级一样......它不能自动装配
-
你的父母如何获得所有这些属性?
-
不同,3 个主要用途:AMQ 消息、HTTP 请求、DB(基于用户的东西)
-
一个孩子可以同时属于多个父母吗?
标签: java multithreading spring concurrency inversion-of-control