Skip to content

Commit 35bd4cf

Browse files
committed
Merge pull request #14934 from Artsiom Yudovin
* gh-14934: Polish "Make auto-configured applicationTaskExecutor bean lazy" Make auto-configured applicationTaskExecutor bean lazy
2 parents de674db + f492285 commit 35bd4cf

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/task/TaskExecutionAutoConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.springframework.boot.task.TaskExecutorCustomizer;
2828
import org.springframework.context.annotation.Bean;
2929
import org.springframework.context.annotation.Configuration;
30+
import org.springframework.context.annotation.Lazy;
3031
import org.springframework.core.task.TaskDecorator;
3132
import org.springframework.core.task.TaskExecutor;
3233
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -77,6 +78,7 @@ public TaskExecutorBuilder taskExecutorBuilder() {
7778
return builder;
7879
}
7980

81+
@Lazy
8082
@Bean(name = APPLICATION_TASK_EXECUTOR_BEAN_NAME)
8183
@ConditionalOnMissingBean(Executor.class)
8284
public ThreadPoolTaskExecutor applicationTaskExecutor(TaskExecutorBuilder builder) {

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/task/TaskExecutionAutoConfigurationTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.concurrent.Future;
2121
import java.util.function.Consumer;
2222

23+
import org.junit.Rule;
2324
import org.junit.Test;
2425

2526
import org.springframework.beans.DirectFieldAccessor;
@@ -29,6 +30,7 @@
2930
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
3031
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3132
import org.springframework.boot.test.context.runner.ContextConsumer;
33+
import org.springframework.boot.test.rule.OutputCapture;
3234
import org.springframework.context.annotation.Bean;
3335
import org.springframework.context.annotation.Configuration;
3436
import org.springframework.core.task.SyncTaskExecutor;
@@ -55,6 +57,9 @@ public class TaskExecutionAutoConfigurationTests {
5557
.withConfiguration(
5658
AutoConfigurations.of(TaskExecutionAutoConfiguration.class));
5759

60+
@Rule
61+
public final OutputCapture output = new OutputCapture();
62+
5863
@Test
5964
public void taskExecutorBuilderShouldApplyCustomSettings() {
6065
this.contextRunner
@@ -101,11 +106,15 @@ public void taskExecutorBuilderShouldUseTaskDecorator() {
101106

102107
@Test
103108
public void taskExecutorAutoConfigured() {
109+
this.output.reset();
104110
this.contextRunner.run((context) -> {
111+
assertThat(this.output.toString())
112+
.doesNotContain("Initializing ExecutorService");
105113
assertThat(context).hasSingleBean(Executor.class);
106114
assertThat(context).hasBean("applicationTaskExecutor");
107115
assertThat(context).getBean("applicationTaskExecutor")
108116
.isInstanceOf(ThreadPoolTaskExecutor.class);
117+
assertThat(this.output.toString()).contains("Initializing ExecutorService");
109118
});
110119
}
111120

0 commit comments

Comments
 (0)