Cómo crear TaskExecutor adicional junto TaskExecutionAutoConfiguration?

membersound:

Quiero primavera para cargar el valor predeterminado ThreadPoolTaskExecutorde TaskExecutionAutoConfiguration. Aunque quiero proveer puedan poseer ejecutor adicional para algunas tareas explícitas secundarios:

@Bean
public ThreadPoolExecutor myRequestPool() {
    return (ThreadPoolExecutor) Executors.newFixedThreadPool(10);
}

Problema: la adición del grano de más arriba, el TaskExecutionAutoConfigurationno se ejecutará más, y el ejecutor de primavera-default no se inicializará, porque @ConditionalOnMissingBean(Executor.class)no coincide más:

package org.springframework.boot.autoconfigure.task;

public class TaskExecutionAutoConfiguration {

    @Lazy
    @Bean(name = APPLICATION_TASK_EXECUTOR_BEAN_NAME)
    @ConditionalOnMissingBean(Executor.class)
    public ThreadPoolTaskExecutor applicationTaskExecutor(TaskExecutorBuilder builder) {
        return builder.build();
    }

Pregunta: ¿cómo puedo dejar que todavía primavera crear ambos granos?

Ken Chan

El grano de ejecutor en TaskExecutionAutoConfigurationsólo se crean si no hay otros granos ejecutor existen (debido a @ConditionalOnMissingBean(Executor.class)) en el momento en que el procesamiento de la configuración automática. Por lo tanto, con el fin de crear tanto de nuestra ejecutor y el definido en TaskExecutionAutoConfiguration, tenemos que asegurarnos de que nuestro frijol se procesa despuésTaskExecutionAutoConfiguration

De acuerdo con documentos , si hacemos nuestro grano de ser los candidatos de configuración automática (que requiere la adición de la @Configurationclase META-INF/spring.factories), entonces podemos utilizar @AutoConfigureAfterpara configurar que sea procesada después de TaskExecutionAutoConfiguration:

package foo.bar.baz.qux;

@Configuration
@AutoConfigureAfter(TaskExecutionAutoConfiguration.class)
public class Config {
    @Bean
    public ThreadPoolExecutor myRequestPool() {
        return (ThreadPoolExecutor) Executors.newFixedThreadPool(10);
    }
}

A continuación, cree META-INF/spring.factoriesque contiene:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  foo.bar.baz.qux.Config

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=190306&siteId=1
Recomendado
Clasificación