diff --git a/org.springframework.context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java b/org.springframework.context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java index 3ad7d748d4..3cc04ef4ed 100644 --- a/org.springframework.context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java +++ b/org.springframework.context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java @@ -108,6 +108,9 @@ public class TaskExecutorFactoryBean implements FactoryBean, BeanN this.setValueIfNotNull("corePoolSize", range[0]); this.setValueIfNotNull("maxPoolSize", range[1]); } + if (this.beanName != null) { + this.beanWrapper.setPropertyValue("threadNamePrefix", this.beanName + "-"); + } this.target = (TaskExecutor) this.beanWrapper.getWrappedInstance(); if (this.target instanceof InitializingBean) { ((InitializingBean)this.target).afterPropertiesSet(); diff --git a/org.springframework.context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java b/org.springframework.context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java index 2941018746..f807786cd1 100644 --- a/org.springframework.context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java +++ b/org.springframework.context/src/test/java/org/springframework/scheduling/config/ExecutorBeanDefinitionParserTests.java @@ -19,7 +19,6 @@ package org.springframework.scheduling.config; import static org.junit.Assert.assertEquals; import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; import org.junit.Before; @@ -30,6 +29,7 @@ import org.springframework.beans.factory.BeanCreationException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.util.CustomizableThreadCreator; /** * @author Mark Fisher @@ -124,6 +124,12 @@ public class ExecutorBeanDefinitionParserTests { this.context.getBean("propertyPlaceholderWithInvalidPoolSize"); } + @Test + public void threadNamePrefix() { + CustomizableThreadCreator executor = this.context.getBean("default", CustomizableThreadCreator.class); + assertEquals("default-", executor.getThreadNamePrefix()); + } + private int getCorePoolSize(Object executor) { return (Integer) new DirectFieldAccessor(executor).getPropertyValue("corePoolSize");