阻止SpringBoot创建EmbeddedServletContainer

时间:2016-11-11 13:12:57

标签: spring-boot

我正在尝试将现有的spring应用程序转换为spring boot应用程序。这个应用程序不是一个Web应用程序,但在它的maven依赖层次结构深处它包含一个spring-web jar,因此spring-boot尝试自动配置WebEnvironment并反过来抱怨没有找到EmbeddedServletContainerFactory。但这是因为我使用的是spring-boot-starter而不是spring-boot-starter-web。

我的任务是:如何防止spring-boot自动发现类路径中的Web特定项?我已经尝试了像

这样的东西
@EnableAutoConfiguration(exclude = { EmbeddedServletContainerAutoConfiguration.class })

但它似乎不起作用。调试启动过程我发现它遇到了一个名为deduceWebEnvironment()的方法,它被无条件地调用。只要以下类在类路径上,此方法就返回true:

javax.servlet.Servlet, org.springframework.web.context.ConfigurableWebApplicationContext

但是,即使这些类存在于cp中,我也不想启动Web应用程序。

1 个答案:

答案 0 :(得分:0)

尝试new SpringApplicationBuilder(YourApp.class).setWebEnvironment(false).run(args)您还可以通过application.properties

中的配置停用网络模式
spring.main.web-environment=false

请参阅the documentation