Skip to content

Commit d0859f1

Browse files
Camille Vienotsnicoll
authored andcommitted
Alias auto-configured TaskExecutor to make async tasks use it
See gh-15748
1 parent 9e0b1c2 commit d0859f1

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
* {@link EnableAutoConfiguration Auto-configuration} for {@link TaskExecutor}.
3737
*
3838
* @author Stephane Nicoll
39+
* @author Camille Vienot
3940
* @since 2.1.0
4041
*/
4142
@ConditionalOnClass(ThreadPoolTaskExecutor.class)
@@ -48,6 +49,8 @@ public class TaskExecutionAutoConfiguration {
4849
*/
4950
public static final String APPLICATION_TASK_EXECUTOR_BEAN_NAME = "applicationTaskExecutor";
5051

52+
public static final String ASYNC_TASK_EXECUTOR_BEAN_NAME = "taskExecutor";
53+
5154
private final TaskExecutionProperties properties;
5255

5356
private final ObjectProvider<TaskExecutorCustomizer> taskExecutorCustomizers;
@@ -79,7 +82,7 @@ public TaskExecutorBuilder taskExecutorBuilder() {
7982
}
8083

8184
@Lazy
82-
@Bean(name = APPLICATION_TASK_EXECUTOR_BEAN_NAME)
85+
@Bean(name = { APPLICATION_TASK_EXECUTOR_BEAN_NAME, ASYNC_TASK_EXECUTOR_BEAN_NAME })
8386
@ConditionalOnMissingBean(Executor.class)
8487
public ThreadPoolTaskExecutor applicationTaskExecutor(TaskExecutorBuilder builder) {
8588
return builder.build();

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.springframework.scheduling.annotation.Async;
3939
import org.springframework.scheduling.annotation.AsyncResult;
4040
import org.springframework.scheduling.annotation.EnableAsync;
41+
import org.springframework.scheduling.annotation.EnableScheduling;
4142
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
4243
import org.springframework.test.util.ReflectionTestUtils;
4344

@@ -49,6 +50,7 @@
4950
* Tests for {@link TaskExecutionAutoConfiguration}.
5051
*
5152
* @author Stephane Nicoll
53+
* @author Camille Vienot
5254
*/
5355
public class TaskExecutionAutoConfigurationTests {
5456

@@ -152,6 +154,21 @@ public void enableAsyncUsesAutoConfiguredOneByDefault() {
152154
});
153155
}
154156

157+
@Test
158+
public void enableAsyncUsesAutoConfiguredOneByDefaultEvenThoughSchedulingIsConfigured() {
159+
this.contextRunner
160+
.withPropertyValues("spring.task.execution.thread-name-prefix=task-test-")
161+
.withConfiguration(
162+
AutoConfigurations.of(TaskSchedulingAutoConfiguration.class))
163+
.withUserConfiguration(AsyncConfiguration.class,
164+
SchedulingConfiguration.class, TestBean.class)
165+
.run((context) -> {
166+
TestBean bean = context.getBean(TestBean.class);
167+
String text = bean.echo("something").get();
168+
assertThat(text).contains("task-test-").contains("something");
169+
});
170+
}
171+
155172
private ContextConsumer<AssertableApplicationContext> assertTaskExecutor(
156173
Consumer<ThreadPoolTaskExecutor> taskExecutor) {
157174
return (context) -> {
@@ -209,6 +226,12 @@ static class AsyncConfiguration {
209226

210227
}
211228

229+
@Configuration
230+
@EnableScheduling
231+
static class SchedulingConfiguration {
232+
233+
}
234+
212235
static class TestBean {
213236

214237
@Async

0 commit comments

Comments
 (0)