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