Refine SpringApplicationBuilder and add a test for profiles
This commit is contained in:
@@ -54,6 +54,7 @@ import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.StopWatch;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.context.ConfigurableWebApplicationContext;
|
||||
import org.springframework.web.context.WebApplicationContext;
|
||||
import org.springframework.web.context.support.StandardServletEnvironment;
|
||||
|
||||
/**
|
||||
@@ -626,6 +627,9 @@ public class SpringApplication {
|
||||
public void setApplicationContextClass(
|
||||
Class<? extends ConfigurableApplicationContext> applicationContextClass) {
|
||||
this.applicationContextClass = applicationContextClass;
|
||||
if (!WebApplicationContext.class.isAssignableFrom(applicationContextClass)) {
|
||||
this.webEnvironment = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -61,7 +61,7 @@ public class SpringApplicationBuilder {
|
||||
private SpringApplicationBuilder parent;
|
||||
private AtomicBoolean running = new AtomicBoolean(false);
|
||||
private Set<Object> sources = new LinkedHashSet<Object>();
|
||||
private String[] defaultArgs;
|
||||
private Set<String> defaultArgs = new LinkedHashSet<String>();
|
||||
private ConfigurableEnvironment environment;
|
||||
|
||||
public SpringApplicationBuilder(Object... sources) {
|
||||
@@ -320,8 +320,9 @@ public class SpringApplicationBuilder {
|
||||
* @return the current builder
|
||||
*/
|
||||
public SpringApplicationBuilder defaultArgs(String... defaultArgs) {
|
||||
this.defaultArgs = defaultArgs;
|
||||
this.application.setDefaultArgs(defaultArgs);
|
||||
this.defaultArgs.addAll(Arrays.asList(defaultArgs));
|
||||
this.application.setDefaultArgs(this.defaultArgs
|
||||
.toArray(new String[this.defaultArgs.size()]));
|
||||
if (this.parent != null) {
|
||||
this.parent.defaultArgs(defaultArgs);
|
||||
this.parent.environment(this.environment);
|
||||
@@ -329,6 +330,11 @@ public class SpringApplicationBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
private SpringApplicationBuilder defaultArgs(Set<String> defaultArgs) {
|
||||
this.defaultArgs = defaultArgs;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the active Spring profiles for this app (and its parent and children).
|
||||
* Synonymous with {@link #defaultArgs(String...)
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.support.StaticApplicationContext;
|
||||
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
import static org.hamcrest.Matchers.instanceOf;
|
||||
import static org.hamcrest.Matchers.is;
|
||||
import static org.junit.Assert.assertThat;
|
||||
@@ -46,6 +47,18 @@ public class SpringApplicationBuilderTests {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void profileAndDefaultArgs() throws Exception {
|
||||
SpringApplicationBuilder application = new SpringApplicationBuilder()
|
||||
.sources(ExampleConfig.class)
|
||||
.contextClass(StaticApplicationContext.class).profiles("foo")
|
||||
.defaultArgs("--foo=bar");
|
||||
this.context = application.run();
|
||||
assertThat(this.context, is(instanceOf(StaticApplicationContext.class)));
|
||||
assertThat(this.context.getEnvironment().getProperty("foo"), is(equalTo("bar")));
|
||||
assertThat(this.context.getEnvironment().acceptsProfiles("foo"), is(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void specificApplicationContextClass() throws Exception {
|
||||
SpringApplicationBuilder application = new SpringApplicationBuilder().sources(
|
||||
|
||||
Reference in New Issue
Block a user