From 71fd474ed2d742e82cdc89332172e94664fc14ef Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Mon, 18 Nov 2013 09:59:11 +0000 Subject: [PATCH] Ensure ApplicationContextInitializers are not overwritten SpringApplicationBuilder has to be careful not to overwrite the default initializers if user calls its initializers() method. Fixes gh-120. --- .../boot/builder/SpringApplicationBuilder.java | 3 ++- .../builder/SpringApplicationBuilderTests.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/spring-boot/src/main/java/org/springframework/boot/builder/SpringApplicationBuilder.java b/spring-boot/src/main/java/org/springframework/boot/builder/SpringApplicationBuilder.java index 0253a8ee88..a41192ac17 100644 --- a/spring-boot/src/main/java/org/springframework/boot/builder/SpringApplicationBuilder.java +++ b/spring-boot/src/main/java/org/springframework/boot/builder/SpringApplicationBuilder.java @@ -481,7 +481,8 @@ public class SpringApplicationBuilder { target.addAll(Arrays.asList(initializers)); } this.initializers = target; - this.application.setInitializers(target); + this.application.addInitializers(target + .toArray(new ApplicationContextInitializer[0])); } } diff --git a/spring-boot/src/test/java/org/springframework/boot/builder/SpringApplicationBuilderTests.java b/spring-boot/src/test/java/org/springframework/boot/builder/SpringApplicationBuilderTests.java index b15e4df6eb..9b4ca18173 100644 --- a/spring-boot/src/test/java/org/springframework/boot/builder/SpringApplicationBuilderTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/builder/SpringApplicationBuilderTests.java @@ -23,6 +23,7 @@ import java.util.Collections; import org.junit.After; import org.junit.Test; import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Configuration; @@ -178,6 +179,20 @@ public class SpringApplicationBuilderTests { assertEquals(7, application.application().getInitializers().size()); } + @Test + public void initializersIncludeDefaults() throws Exception { + SpringApplicationBuilder application = new SpringApplicationBuilder( + ExampleConfig.class).web(false).initializers( + new ApplicationContextInitializer() { + @Override + public void initialize( + ConfigurableApplicationContext applicationContext) { + } + }); + this.context = application.run(); + assertEquals(8, application.application().getInitializers().size()); + } + @Configuration static class ExampleConfig {