Spring Boot启用/禁用带有配置文件的嵌入式Tomcat
我正在编写一个Spring
Boot应用程序,该应用程序使用几个@Configuration
类之一,具体取决于文件中@Profile
设置的类application.properties
。
这些配置类之一使用REST接口,因此,我将其包括spring-boot-starter-web
为依赖项。
这将启动嵌入式Tomcat实例,这很好。
问题是,其他配置文件不需要嵌入式服务器(例如,我使用JMS来处理传入消息而不是REST)。
有没有什么方法可以阻止@SpringBootApplication
Tomcat在默认情况下启动,而仅将其用于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