ThreadPoolExecutorFactoryBean是FactoryBean实施DisposableBean。在Spring的XML bean定义中使用时,就像这样
<bean id="executorService"
class="org.springframework.scheduling.concurrent.ThreadPoolExecutorFactoryBean"/>
创建的bean将是ExecutorService的一个实例,并在关闭Spring Application Context后确保调用ThreadPoolExecutorFactoryBean#destroy()
。
是否可以使用Spring 3的@Configuration类配置这样的bean?
答案 0 :(得分:8)
我发现这种方法最优雅:
@Configuration
public class Cfg {
public ExecutorService executorService() {
return executorServiceFactoryBean().getObject();
}
@Bean
public ThreadPoolExecutorFactoryBean executorServiceFactoryBean() {
return new ThreadPoolExecutorFactoryBean();
}
}
请注意executorService()
不使用@Bean
进行注释 - 但您仍然可以从其他需要@Bean
的{{1}}方法中调用它。由于ExecutorService
注释了ThreadPoolExecutorFactoryBean
,因此Spring会自动管理其生命周期(检测@Bean
等)。