Quiero primavera para cargar el valor predeterminado ThreadPoolTaskExecutor
de 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 TaskExecutionAutoConfiguration
no 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?
El grano de ejecutor en TaskExecutionAutoConfiguration
só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 @Configuration
clase META-INF/spring.factories
), entonces podemos utilizar @AutoConfigureAfter
para 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.factories
que contiene:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
foo.bar.baz.qux.Config