diff --git a/spring-boot-deployment-tests/pom.xml b/spring-boot-deployment-tests/pom.xml index c673493ccc..f1af1b523f 100644 --- a/spring-boot-deployment-tests/pom.xml +++ b/spring-boot-deployment-tests/pom.xml @@ -19,7 +19,6 @@ ${basedir}/.. 1.7 - 300000 ${user.home}/.cargo/installs @@ -28,7 +27,6 @@ spring-boot-deployment-test-tomcat spring-boot-deployment-test-wildfly - @@ -74,5 +72,4 @@ - diff --git a/spring-boot-samples/spring-boot-sample-simple/src/main/java/sample/simple/SampleSimpleApplication.java b/spring-boot-samples/spring-boot-sample-simple/src/main/java/sample/simple/SampleSimpleApplication.java index 71e9ebf196..695d260189 100644 --- a/spring-boot-samples/spring-boot-sample-simple/src/main/java/sample/simple/SampleSimpleApplication.java +++ b/spring-boot-samples/spring-boot-sample-simple/src/main/java/sample/simple/SampleSimpleApplication.java @@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; import sample.simple.service.HelloWorldService; @@ -39,6 +40,9 @@ public class SampleSimpleApplication implements CommandLineRunner { } public static void main(String[] args) throws Exception { + SpringApplication application = new SpringApplication( + SampleSimpleApplication.class); + application.setApplicationContextClass(AnnotationConfigApplicationContext.class); SpringApplication.run(SampleSimpleApplication.class, args); } diff --git a/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java b/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java index 8efc0c1021..5725d7c4af 100644 --- a/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java +++ b/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java @@ -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 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. diff --git a/spring-boot/src/main/java/org/springframework/boot/test/SpringApplicationContextLoader.java b/spring-boot/src/main/java/org/springframework/boot/test/SpringApplicationContextLoader.java index d0e3f9e608..e5cd39e0cc 100644 --- a/spring-boot/src/main/java/org/springframework/boot/test/SpringApplicationContextLoader.java +++ b/spring-boot/src/main/java/org/springframework/boot/test/SpringApplicationContextLoader.java @@ -81,6 +81,7 @@ public class SpringApplicationContextLoader extends AbstractContextLoader { throws Exception { assertValidAnnotations(config.getTestClass()); SpringApplication application = getSpringApplication(); + application.setRegisterShutdownHook(false); application.setMainApplicationClass(config.getTestClass()); application.setSources(getSources(config)); ConfigurableEnvironment environment = new StandardEnvironment();