私は春がデフォルトをロードしたいThreadPoolTaskExecutor
からTaskExecutionAutoConfiguration
。私が提供したいけれども、いくつかの明示的な側面タスクのために追加のエグゼキュータを所有することがあります。
@Bean
public ThreadPoolExecutor myRequestPool() {
return (ThreadPoolExecutor) Executors.newFixedThreadPool(10);
}
問題:、上記のBeanを追加するTaskExecutionAutoConfiguration
ので、もはや実行されず、そして春-デフォルトexecutorが初期化されません@ConditionalOnMissingBean(Executor.class)
もはや一致しません。
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();
}
質問:どのように私はまだ春が両方のBeanを作成させることができますか?
でエグゼキュータビーンTaskExecutionAutoConfiguration
のみ他のエグゼキュータ豆は(原因に存在しない場合は作成され@ConditionalOnMissingBean(Executor.class)
ている自動設定の処理時に瞬間)。だから、私たちのエグゼキュータとで定義された1の両方を作成するためにTaskExecutionAutoConfiguration
、我々は確かに私たちのBeanが後に処理されていることを確認する必要がありますTaskExecutionAutoConfiguration
よると、ドキュメント我々はBeanが(追加必要とする自動構成の候補であることを行った場合、@Configuration
内のクラスをMETA-INF/spring.factories
)、私たちは、その後、使用することができ@AutoConfigureAfter
、それが後に処理されるように設定するためにTaskExecutionAutoConfiguration
:
package foo.bar.baz.qux;
@Configuration
@AutoConfigureAfter(TaskExecutionAutoConfiguration.class)
public class Config {
@Bean
public ThreadPoolExecutor myRequestPool() {
return (ThreadPoolExecutor) Executors.newFixedThreadPool(10);
}
}
次に、作成META-INF/spring.factories
が含まれています:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
foo.bar.baz.qux.Config