是否可以使用Spring Boot 1.x选择嵌入式服务器类型

时间:2018-08-13 14:11:04

标签: spring-boot

我正在使用弹簧靴1.5.15.RELEASE

在我的pom.xml中,我有:

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

据我所知,默认情况下,它更喜欢tomcat嵌入式服务器(对此我很满意)。确实,当我在“生产模式”下运行应用程序时,情况似乎就是这样:

  

Tomcat已初始化,端口为:8080

但是,当运行这样的测试时:

@RunWith(SpringRunner.class)
@SpringBootTest(properties = "spring.profiles.active=test", webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class EmbeddedTomcatServerTest {
...test methods
}

我知道:

  

码头在端口63742(http / 1.1)上启动

快速mvn dependency:tree显示:

  

[INFO] +-com.github.tomakehurst:wiremock:jar:2.18.0:test   [INFO] | +-org.eclipse.jetty:jetty-server:jar:9.4.11.v20180605:test

我在测试中使用Wiremock,我猜想它在测试类路径中的存在正在迫使Spring Boot自动配置偏向于在测试中优先使用Jetty而不是Tomcat,并且对运行时类路径的wiremock依赖关系的缺乏又回到了雄猫

我希望我的测试和生产代码都使用tomcat-即使Jetty在类路径中,也有一种方法可以让spring支持Tomcat。

1 个答案:

答案 0 :(得分:1)

提供您自己的EmbeddedServletContainerFactory bean。例如,要始终使用Tomcat,请使用以下bean配置:

@Bean
public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
    return new TomcatEmbeddedServletContainerFactory();
}