Spring Boot启用/禁用带有配置文件的嵌入式Tomcat

我正在编写一个Spring

Boot应用程序,该应用程序使用几个@Configuration类之一,具体取决于文件中@Profile设置的类application.properties

这些配置类之一使用REST接口,因此,我将其包括spring-boot-starter-web为依赖项。

这将启动嵌入式Tomcat实例,这很好。

问题是,其他配置文件不需要嵌入式服务器(例如,我使用JMS来处理传入消息而不是REST)。

有没有什么方法可以阻止@SpringBootApplicationTomcat在默认情况下启动,而仅将其用于REST

Configuration类?例如,通过用@EnableWebMVC

这是我的@Configuration课程的示例:

休息:

@Profile({"REST"})

@Configuration

@EnableWebMvc

public class HttpConfiguration{

.

.

.

}

JMS:

@Profile({"JMS"})

@Configuration

@EnableJms

public class JMSConfiguration{

.

.

.

}

谢谢

回答:

采用

@SpringBootApplication(exclude = {EmbeddedServletContainerAutoConfiguration.class, 

WebMvcAutoConfiguration.class})

排除Spring Boot对嵌入式servlet容器的自动配置。另外,您需要为非REST案例设置以下属性,以使Spring Boot不会尝试启动REST

WebApplicationContext(需要一个servlet容器):

spring.main.web-environment=false

然后通过导入在REST配置文件中启用嵌入式Tomcat

EmbeddedServletContainerAutoConfiguration.class(这将自动配置延迟到REST配置文件加载后:

@Profile({"REST"})

@Configuration

@Import(EmbeddedServletContainerAutoConfiguration.class)

public class HttpConfiguration {

// ...

}

如果使用任何EmbeddedServletContainerCustomizer,还需要导入EmbeddedServletContainerCustomizerBeanPostProcessorRegistrar.class

以上是 Spring Boot启用/禁用带有配置文件的嵌入式Tomcat 的全部内容, 来源链接: utcz.com/qa/399523.html

回到顶部