Create a spring boot application with multiple child contexts

Alessandro Di Bella picture Alessandro Di Bella · Aug 19, 2015 · Viewed 9.5k times · Source

I'm trying to create an application using spring boot with an hierarchical application context. My current main method looks like:

public static void main(String[] args) {
    new SpringApplicationBuilder(TestApplication.class)
            .child(AuditServiceConfiguration.class).web(true)
            .child(TaskServiceConfiguration.class).web(true)
            .run(args);
}

and the two children configurations are annotated with:

@EnableAutoConfiguration
@Configuration

The idea is to have a parent context containing all common beans and each child context to run its own MVC while being isolated from its siblings.

Unfortunately when I run the above, only the last child context is initialised and started.

Any pointers in the right direction would be greatly appreciated.

Regards,

Alessandro

Answer

ESala picture ESala · Apr 9, 2016

The child(...) method creates and returns another SpringApplicationBuilder, so when you call that second child(...) method, you are not instantiating a brother for the child, you are making a child on the first child, which makes the parent become a grandpa.

Jokes aside, have a look at the sibling(...) method which allows to create another context with the same parent.

You can also check out the source to see exactly what is going on.