我希望能够将ExecutorService
实例注入我的Spring服务中,Spring API建议为此目的使用ThreadPoolExecutorFactoryBean
。非常简单的问题;我到底如何使用ThreadPoolExecutorFactoryBean
来创建可以连接到其他服务的ExecutorService
?
我觉得问他的问题完全是个白痴,但我似乎无法弄清楚这一点。
为了扩展斯卡夫曼的答案,这里有一个简短而甜蜜的例子,说明一个人需要做什么:
<bean id="classNeedingExecutor" class="foo.Bar">
<property name="executor" ref="threadExecutor" />
</bean>
<bean id="threadExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolExecutorFactoryBean">
<property name="corePoolSize" value="1" />
<property name="maxPoolSize" value="1" />
</bean>
同样,请参阅 JavaDocs 以获取可用于配置ExecutorService
的其他属性的说明。
首先,您需要了解什么是FactoryBean
- 阅读春季文档的第 3.8.3 节。
然后,您阅读Javadoc ThreadPoolExecutorFactoryBean
并了解它的作用。
接下来,在上下文中配置ThreadPoolExecutorFactoryBean
。这将创建一个ExecutorService
(因为它是一个FactoryBean
,见上文),你可以将其注入到你的bean中。
如果您使用的是 Spring 3,http://blog.espenberntsen.net/2010/03/08/spring-asynchronous-support/,则可以考虑使用 @Async。