diff --git a/kernel-core/pom.xml b/kernel-core/pom.xml
index ce056568876efdcfc425a11c0a9b4713a5807ec2..e315c54149c3f6507cd2b5447390e6d261a1f8f3 100644
--- a/kernel-core/pom.xml
+++ b/kernel-core/pom.xml
@@ -32,6 +32,11 @@
+
+ com.h2database
+ h2
+ test
+
mysql
mysql-connector-java
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java
index 2779541691877649fc475dc44cf566ef8180a88a..063a553cca81a7f4afd95a5cbe57defb16d5fbad 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java
@@ -22,6 +22,7 @@ import cn.stylefeng.roses.core.converter.RequestDataMessageConvert;
import cn.stylefeng.roses.core.util.MvcAdapter;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
@@ -31,6 +32,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupp
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
import javax.annotation.PostConstruct;
+import javax.servlet.ServletContext;
import java.util.Date;
/**
@@ -40,6 +42,7 @@ import java.util.Date;
* @Date 2018/7/24 下午3:27
*/
@Configuration
+@ConditionalOnBean(ServletContext.class)
public class WebAutoConfiguration extends WebMvcConfigurationSupport {
@Autowired
diff --git a/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationNoWebTest.java b/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationNoWebTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f36b1a2e6f7ed34c3e869cd5d80721e80bf80b99
--- /dev/null
+++ b/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationNoWebTest.java
@@ -0,0 +1,27 @@
+package cn.stylefeng.roses.core.config;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(
+ webEnvironment = SpringBootTest.WebEnvironment.NONE,
+ classes = WebAutoConfiguration.class
+)
+public class WebAutoConfigurationNoWebTest {
+
+ @Autowired
+ private ApplicationContext applicationContext;
+
+ @Test
+ public void testNoWebEnvironment() throws Exception {
+ // 本测试指定了 webEnvironment = SpringBootTest.WebEnvironment.NONE,
+ // 在这个情况下 WebAutoConfiguration 应该自动跳过初始化,而不是报错。
+ Assert.assertFalse(applicationContext.containsBean("error"));
+ }
+}
\ No newline at end of file
diff --git a/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationTest.java b/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..ffb1be3cb25cd4a64847240068a8dfb094824fab
--- /dev/null
+++ b/kernel-core/src/test/java/cn/stylefeng/roses/core/config/WebAutoConfigurationTest.java
@@ -0,0 +1,25 @@
+package cn.stylefeng.roses.core.config;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(
+ classes = WebAutoConfiguration.class
+)
+public class WebAutoConfigurationTest {
+
+ @Autowired
+ private ApplicationContext applicationContext;
+
+ @Test
+ public void testWebEnvironment() throws Exception {
+ // 在这个情况下 WebAutoConfiguration 应该正常初始化。
+ Assert.assertTrue(applicationContext.containsBean("error"));
+ }
+}
\ No newline at end of file