AsyncAnnotationBeanPostProcessor tries to find TaskExecutor by type/name
Issue: SPR-13248
This commit is contained in:
@@ -87,6 +87,60 @@ public class AsyncAnnotationBeanPostProcessorTests {
|
||||
context.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void taskExecutorByBeanType() {
|
||||
StaticApplicationContext context = new StaticApplicationContext();
|
||||
|
||||
BeanDefinition processorDefinition = new RootBeanDefinition(AsyncAnnotationBeanPostProcessor.class);
|
||||
context.registerBeanDefinition("postProcessor", processorDefinition);
|
||||
|
||||
BeanDefinition executorDefinition = new RootBeanDefinition(ThreadPoolTaskExecutor.class);
|
||||
executorDefinition.getPropertyValues().add("threadNamePrefix", "testExecutor");
|
||||
context.registerBeanDefinition("myExecutor", executorDefinition);
|
||||
|
||||
BeanDefinition targetDefinition =
|
||||
new RootBeanDefinition(AsyncAnnotationBeanPostProcessorTests.TestBean.class);
|
||||
context.registerBeanDefinition("target", targetDefinition);
|
||||
|
||||
context.refresh();
|
||||
|
||||
ITestBean testBean = context.getBean("target", ITestBean.class);
|
||||
testBean.test();
|
||||
testBean.await(3000);
|
||||
Thread asyncThread = testBean.getThread();
|
||||
assertTrue(asyncThread.getName().startsWith("testExecutor"));
|
||||
context.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void taskExecutorByBeanName() {
|
||||
StaticApplicationContext context = new StaticApplicationContext();
|
||||
|
||||
BeanDefinition processorDefinition = new RootBeanDefinition(AsyncAnnotationBeanPostProcessor.class);
|
||||
context.registerBeanDefinition("postProcessor", processorDefinition);
|
||||
|
||||
BeanDefinition executorDefinition = new RootBeanDefinition(ThreadPoolTaskExecutor.class);
|
||||
executorDefinition.getPropertyValues().add("threadNamePrefix", "testExecutor");
|
||||
context.registerBeanDefinition("myExecutor", executorDefinition);
|
||||
|
||||
BeanDefinition executorDefinition2 = new RootBeanDefinition(ThreadPoolTaskExecutor.class);
|
||||
executorDefinition2.getPropertyValues().add("threadNamePrefix", "testExecutor2");
|
||||
context.registerBeanDefinition("taskExecutor", executorDefinition2);
|
||||
|
||||
BeanDefinition targetDefinition =
|
||||
new RootBeanDefinition(AsyncAnnotationBeanPostProcessorTests.TestBean.class);
|
||||
context.registerBeanDefinition("target", targetDefinition);
|
||||
|
||||
context.refresh();
|
||||
|
||||
ITestBean testBean = context.getBean("target", ITestBean.class);
|
||||
testBean.test();
|
||||
testBean.await(3000);
|
||||
Thread asyncThread = testBean.getThread();
|
||||
assertTrue(asyncThread.getName().startsWith("testExecutor2"));
|
||||
context.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void configuredThroughNamespace() {
|
||||
GenericXmlApplicationContext context = new GenericXmlApplicationContext();
|
||||
@@ -264,6 +318,7 @@ public class AsyncAnnotationBeanPostProcessorTests {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static class DirectExecutor implements Executor {
|
||||
|
||||
@Override
|
||||
@@ -272,6 +327,7 @@ public class AsyncAnnotationBeanPostProcessorTests {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Configuration
|
||||
@EnableAsync
|
||||
static class ConfigWithExceptionHandler extends AsyncConfigurerSupport {
|
||||
@@ -292,5 +348,4 @@ public class AsyncAnnotationBeanPostProcessorTests {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user