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.
This commit is contained in:
parent
79495e7ad9
commit
71fd474ed2
|
|
@ -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]));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<ConfigurableApplicationContext>() {
|
||||
@Override
|
||||
public void initialize(
|
||||
ConfigurableApplicationContext applicationContext) {
|
||||
}
|
||||
});
|
||||
this.context = application.run();
|
||||
assertEquals(8, application.application().getInitializers().size());
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class ExampleConfig {
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue