Merge branch '2.0.x'
This commit is contained in:
commit
00e122c7ec
|
@ -46,6 +46,7 @@ import org.springframework.boot.context.properties.bind.Bindable;
|
||||||
import org.springframework.boot.context.properties.bind.Binder;
|
import org.springframework.boot.context.properties.bind.Binder;
|
||||||
import org.springframework.boot.context.properties.source.ConfigurationPropertySources;
|
import org.springframework.boot.context.properties.source.ConfigurationPropertySources;
|
||||||
import org.springframework.boot.convert.ApplicationConversionService;
|
import org.springframework.boot.convert.ApplicationConversionService;
|
||||||
|
import org.springframework.boot.web.reactive.context.ReactiveWebApplicationContext;
|
||||||
import org.springframework.boot.web.reactive.context.StandardReactiveWebEnvironment;
|
import org.springframework.boot.web.reactive.context.StandardReactiveWebEnvironment;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ApplicationContextInitializer;
|
import org.springframework.context.ApplicationContextInitializer;
|
||||||
|
@ -1195,18 +1196,19 @@ public class SpringApplication {
|
||||||
public void setApplicationContextClass(
|
public void setApplicationContextClass(
|
||||||
Class<? extends ConfigurableApplicationContext> applicationContextClass) {
|
Class<? extends ConfigurableApplicationContext> applicationContextClass) {
|
||||||
this.applicationContextClass = applicationContextClass;
|
this.applicationContextClass = applicationContextClass;
|
||||||
if (!isWebApplicationContext(applicationContextClass)) {
|
this.webApplicationType = deduceWebApplicationType(applicationContextClass);
|
||||||
this.webApplicationType = WebApplicationType.NONE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isWebApplicationContext(Class<?> applicationContextClass) {
|
private WebApplicationType deduceWebApplicationType(
|
||||||
try {
|
Class<?> applicationContextClass) {
|
||||||
return WebApplicationContext.class.isAssignableFrom(applicationContextClass);
|
if (WebApplicationContext.class.isAssignableFrom(applicationContextClass)) {
|
||||||
|
return WebApplicationType.SERVLET;
|
||||||
}
|
}
|
||||||
catch (NoClassDefFoundError ex) {
|
if (ReactiveWebApplicationContext.class
|
||||||
return false;
|
.isAssignableFrom(applicationContextClass)) {
|
||||||
|
return WebApplicationType.REACTIVE;
|
||||||
}
|
}
|
||||||
|
return WebApplicationType.NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -60,6 +60,7 @@ import org.springframework.boot.convert.ApplicationConversionService;
|
||||||
import org.springframework.boot.testsupport.rule.OutputCapture;
|
import org.springframework.boot.testsupport.rule.OutputCapture;
|
||||||
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
|
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
|
||||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
||||||
|
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebApplicationContext;
|
||||||
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
|
||||||
import org.springframework.boot.web.reactive.context.ReactiveWebApplicationContext;
|
import org.springframework.boot.web.reactive.context.ReactiveWebApplicationContext;
|
||||||
import org.springframework.boot.web.reactive.context.StandardReactiveWebEnvironment;
|
import org.springframework.boot.web.reactive.context.StandardReactiveWebEnvironment;
|
||||||
|
@ -99,6 +100,7 @@ import org.springframework.util.ReflectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
import org.springframework.web.context.ConfigurableWebEnvironment;
|
import org.springframework.web.context.ConfigurableWebEnvironment;
|
||||||
import org.springframework.web.context.WebApplicationContext;
|
import org.springframework.web.context.WebApplicationContext;
|
||||||
|
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
|
||||||
import org.springframework.web.context.support.StandardServletEnvironment;
|
import org.springframework.web.context.support.StandardServletEnvironment;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
@ -319,6 +321,32 @@ public class SpringApplicationTests {
|
||||||
assertThat(this.context).isInstanceOf(StaticApplicationContext.class);
|
assertThat(this.context).isInstanceOf(StaticApplicationContext.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void specificWebApplicationContextClassDetectWebApplicationType() {
|
||||||
|
SpringApplication application = new SpringApplication(ExampleConfig.class);
|
||||||
|
application
|
||||||
|
.setApplicationContextClass(AnnotationConfigWebApplicationContext.class);
|
||||||
|
assertThat(application.getWebApplicationType())
|
||||||
|
.isEqualTo(WebApplicationType.SERVLET);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void specificReactiveApplicationContextClassDetectReactiveApplicationType() {
|
||||||
|
SpringApplication application = new SpringApplication(ExampleConfig.class);
|
||||||
|
application.setApplicationContextClass(
|
||||||
|
AnnotationConfigReactiveWebApplicationContext.class);
|
||||||
|
assertThat(application.getWebApplicationType())
|
||||||
|
.isEqualTo(WebApplicationType.REACTIVE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void nonWebNorReactiveApplicationContextClassDetectNoneApplicationType() {
|
||||||
|
SpringApplication application = new SpringApplication(ExampleConfig.class);
|
||||||
|
application.setApplicationContextClass(StaticApplicationContext.class);
|
||||||
|
assertThat(application.getWebApplicationType())
|
||||||
|
.isEqualTo(WebApplicationType.NONE);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void specificApplicationContextInitializer() {
|
public void specificApplicationContextInitializer() {
|
||||||
SpringApplication application = new SpringApplication(ExampleConfig.class);
|
SpringApplication application = new SpringApplication(ExampleConfig.class);
|
||||||
|
|
Loading…
Reference in New Issue