@ -226,12 +226,21 @@ public class SpringApplication {
@@ -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 {
@@ -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 {
@@ -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 .