java - 如何使用 XML 在 Spring 中创建执行器服务 bean
问题描述
我必须ScheduledThreadPoolExecutor
在用 XML 编写的 Spring 配置文件中创建一个 bean。在Java中,我会把它写成
@Bean(name = "MyThreadPoolList")
public List<ScheduledThreadPoolExecutor> executorList() {
List<ScheduledThreadPoolExecutor> executor = new ArrayList<>();
ScheduledThreadPoolExecutor tempExecutor;
for (int i = 0; i< 3; i++ ){
tempExecutor = new ScheduledThreadPoolExecutor(
1,
NamingThreadFactory.createWithDaemon("ExecutorPool-"+i+"-Thread-%d", true));
tempExecutor.prestartAllCoreThreads();
executor.add(i, tempExecutor);
}
return Collections.unmodifiableList(executor);
}
但我不知道在 XML 中实现这一目标的最佳方法是什么。我可以尝试以下方法:
<bean id="MyThreadPoolList" class="java.util.ArrayList">
<constructor-arg>
<list>
<bean class="java.util.concurrent.ScheduledThreadPoolExecutor" init-method="prestartAllCoreThreads">
<constructor-arg value="1"/>
<constructor-arg>
<bean class="my.factory.NamingThreadFactory" factory-method="createWithDaemon">
<constructor-arg value="ExecutorPool-0-Thread-%d"/>
<constructor-arg type="boolean" value="true"/>
</bean>
</constructor-arg>
</bean>
<bean class="java.util.concurrent.ScheduledThreadPoolExecutor" init-method="prestartAllCoreThreads">
<constructor-arg value="1"/>
<constructor-arg>
<bean class="my.factory.NamingThreadFactory" factory-method="createWithDaemon">
<constructor-arg value="ExecutorPool-1-Thread-%d"/>
<constructor-arg type="boolean" value="true"/>
</bean>
</constructor-arg>
</bean>
<bean class="java.util.concurrent.ScheduledThreadPoolExecutor" init-method="prestartAllCoreThreads">
<constructor-arg value="1"/>
<constructor-arg>
<bean class="my.factory.NamingThreadFactory" factory-method="createWithDaemon">
<constructor-arg value="ExecutorPool-2-Thread-%d"/>
<constructor-arg type="boolean" value="true"/>
</bean>
</constructor-arg>
</bean>
</list>
</constructor-arg>
</bean>
但问题是:
- 有太多重复的代码和
- 如果将来我想将执行器服务的数量增加到 500,我将不得不复制这 500 次。
有没有更优雅的方法来实现这一点?
解决方案
推荐阅读
- r - 为什么我的数据是用平线而不是常规折线图绘制的?R
- mongodb - 启动 mongodb 企业版 4.2 的问题
- discord - 有没有办法在不实际 ping 用户的情况下提及用户(蓝色突出显示)?
- vba - 访问未导出到 EXCEL 的 vba 代码“参数太少。应为 1。”
- svg - 如何知道这个 SVG 的半径?
- nginx - NGINX location {} 不同的根目录
- r - R,如何使用变量的内容作为列表字段的名称?
- python - 如何在没有括号的烧瓶中显示列表?(通过使用 jinja2 批处理)
- angular - 根据存储在 localstorage 中的 id 显示内容(API 请求)
- ios - Firestore 电话验证导致 ios 崩溃 (Flutter)