TaskExecutionAutoConfigurationの横に追加のTaskExecutorを作成する方法?

membersound:

私は春がデフォルトをロードしたい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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=190303&siteId=1