|
|
|
@ -226,12 +226,21 @@ public class SpringApplication {
|
|
|
|
|
if (sources != null && sources.length > 0) {
|
|
|
|
|
this.sources.addAll(Arrays.asList(sources));
|
|
|
|
|
}
|
|
|
|
|
this.webEnvironment = isSpringWebAvailable();
|
|
|
|
|
this.webEnvironment = deduceWebEnvironment();
|
|
|
|
|
setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));
|
|
|
|
|
setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));
|
|
|
|
|
this.mainApplicationClass = deduceMainApplicationClass();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean deduceWebEnvironment() {
|
|
|
|
|
for (String className : WEB_ENVIRONMENT_CLASSES) {
|
|
|
|
|
if (!ClassUtils.isPresent(className, null)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Class<?> deduceMainApplicationClass() {
|
|
|
|
|
try {
|
|
|
|
|
StackTraceElement[] stackTrace = new RuntimeException().getStackTrace();
|
|
|
|
@ -877,12 +886,20 @@ public class SpringApplication {
|
|
|
|
|
public void setApplicationContextClass(
|
|
|
|
|
Class<? extends ConfigurableApplicationContext> applicationContextClass) {
|
|
|
|
|
this.applicationContextClass = applicationContextClass;
|
|
|
|
|
if (!isSpringWebAvailable()
|
|
|
|
|
|| !WebApplicationContext.class.isAssignableFrom(applicationContextClass)) {
|
|
|
|
|
if (!isWebApplicationContext(applicationContextClass)) {
|
|
|
|
|
this.webEnvironment = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean isWebApplicationContext(Class<?> applicationContextClass) {
|
|
|
|
|
try {
|
|
|
|
|
return WebApplicationContext.class.isAssignableFrom(applicationContextClass);
|
|
|
|
|
}
|
|
|
|
|
catch (NoClassDefFoundError ex) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Sets the {@link ApplicationContextInitializer} that will be applied to the Spring
|
|
|
|
|
* {@link ApplicationContext}.
|
|
|
|
@ -941,15 +958,6 @@ public class SpringApplication {
|
|
|
|
|
return asUnmodifiableOrderedSet(this.listeners);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean isSpringWebAvailable() {
|
|
|
|
|
for (String className : WEB_ENVIRONMENT_CLASSES) {
|
|
|
|
|
if (!ClassUtils.isPresent(className, null)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Static helper that can be used to run a {@link SpringApplication} from the
|
|
|
|
|
* specified source using default settings.
|
|
|
|
|