Commit 5c43a5b7 authored by Andy Wilkinson's avatar Andy Wilkinson

Honour custom bean name generator for non-web applications

Closes gh-6160
parent ed2586d3
...@@ -72,7 +72,6 @@ import org.springframework.util.ObjectUtils; ...@@ -72,7 +72,6 @@ import org.springframework.util.ObjectUtils;
import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils;
import org.springframework.util.StopWatch; import org.springframework.util.StopWatch;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.context.ConfigurableWebApplicationContext;
import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.StandardServletEnvironment; import org.springframework.web.context.support.StandardServletEnvironment;
...@@ -603,15 +602,10 @@ public class SpringApplication { ...@@ -603,15 +602,10 @@ public class SpringApplication {
* @param context the application context * @param context the application context
*/ */
protected void postProcessApplicationContext(ConfigurableApplicationContext context) { protected void postProcessApplicationContext(ConfigurableApplicationContext context) {
if (this.webEnvironment) { if (this.beanNameGenerator != null) {
if (context instanceof ConfigurableWebApplicationContext) { context.getBeanFactory().registerSingleton(
ConfigurableWebApplicationContext configurableContext = (ConfigurableWebApplicationContext) context; AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR,
if (this.beanNameGenerator != null) { this.beanNameGenerator);
configurableContext.getBeanFactory().registerSingleton(
AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR,
this.beanNameGenerator);
}
}
} }
if (this.resourceLoader != null) { if (this.resourceLoader != null) {
if (context instanceof GenericApplicationContext) { if (context instanceof GenericApplicationContext) {
......
...@@ -53,6 +53,7 @@ import org.springframework.context.ConfigurableApplicationContext; ...@@ -53,6 +53,7 @@ import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.AnnotationConfigUtils; import org.springframework.context.annotation.AnnotationConfigUtils;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.SimpleApplicationEventMulticaster; import org.springframework.context.event.SimpleApplicationEventMulticaster;
...@@ -403,6 +404,21 @@ public class SpringApplicationTests { ...@@ -403,6 +404,21 @@ public class SpringApplicationTests {
sameInstance((Object) beanNameGenerator)); sameInstance((Object) beanNameGenerator));
} }
@Test
public void customBeanNameGeneratorWithNonWebApplication() throws Exception {
TestSpringApplication application = new TestSpringApplication(
ExampleWebConfig.class);
application.setWebEnvironment(false);
BeanNameGenerator beanNameGenerator = new DefaultBeanNameGenerator();
application.setBeanNameGenerator(beanNameGenerator);
this.context = application.run();
verify(application.getLoader()).setBeanNameGenerator(beanNameGenerator);
assertThat(
this.context
.getBean(AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR),
sameInstance((Object) beanNameGenerator));
}
@Test @Test
public void commandLinePropertySource() throws Exception { public void commandLinePropertySource() throws Exception {
SpringApplication application = new SpringApplication(ExampleConfig.class); SpringApplication application = new SpringApplication(ExampleConfig.class);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment