Skip to content

Commit a40ffa3

Browse files
author
Camille Vienot
committed
Use alias for autoconfigured taskExecutor, to make async tasks use it
(even though multiple task executors are injected) Fixes gh-15729
1 parent 530c7be commit a40ffa3

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

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

Lines changed: 3 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)
@@ -47,6 +48,7 @@ public class TaskExecutionAutoConfiguration {
4748
* Bean name of the application {@link TaskExecutor}.
4849
*/
4950
public static final String APPLICATION_TASK_EXECUTOR_BEAN_NAME = "applicationTaskExecutor";
51+
public static final String ASYNC_TASK_EXECUTOR_BEAN_NAME = "taskExecutor";
5052

5153
private final TaskExecutionProperties properties;
5254

@@ -79,7 +81,7 @@ public TaskExecutorBuilder taskExecutorBuilder() {
7981
}
8082

8183
@Lazy
82-
@Bean(name = APPLICATION_TASK_EXECUTOR_BEAN_NAME)
84+
@Bean(name = {APPLICATION_TASK_EXECUTOR_BEAN_NAME, ASYNC_TASK_EXECUTOR_BEAN_NAME})
8385
@ConditionalOnMissingBean(Executor.class)
8486
public ThreadPoolTaskExecutor applicationTaskExecutor(TaskExecutorBuilder builder) {
8587
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

@@ -151,6 +153,21 @@ public void enableAsyncUsesAutoConfiguredOneByDefault() {
151153
});
152154
}
153155

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

209226
}
210227

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

213236
@Async

0 commit comments

Comments
 (0)