在Spring的Java配置中使用FactoryBean和DisposableBean

时间:2012-10-17 18:41:49

标签: java spring config

ThreadPoolExecutorFactoryBeanFactoryBean实施DisposableBean。在Spring的XML bean定义中使用时,就像这样

<bean id="executorService" 
      class="org.springframework.scheduling.concurrent.ThreadPoolExecutorFactoryBean"/>

创建的bean将是ExecutorService的一个实例,并在关闭Spring Application Context后确保调用ThreadPoolExecutorFactoryBean#destroy()

是否可以使用Spring 3的@Configuration类配置这样的bean?

1 个答案:

答案 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等)。