2016-11-11 92 views
0

我試圖將現有的Spring應用程序轉換爲Spring啓動應用程序。這個應用程序不是一個Web應用程序,但是它的Maven依賴關係層次結構中包含一個Spring-Web jar,因此spring-boot會嘗試自動配置一個WebEnvironment,然後抱怨找不到EmbeddedServletContainerFactory。但這是因爲我使用的是spring-boot-starter而不是spring-boot-starter-web。防止SpringBoot創建EmbeddedServletContainer

我的任務是:如何防止spring-boot在類路徑中自動發現Web特定項目?我已經嘗試過類似於

@EnableAutoConfiguration(exclude = { EmbeddedServletContainerAutoConfiguration.class }) 

但它似乎沒有工作。調試啓動過程我發現它運行在名爲deduceWebEnvironment()的方法中,這個方法被無條件地調用。這種方法只要下面的類在類路徑返回true:

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

但同樣,在CP甚至還存在這個班,我不希望啓動一個網絡應用程序。

回答

0

嘗試new SpringApplicationBuilder(YourApp.class).setWebEnvironment(false).run(args)您還可以通過配置禁用Web模式在application.properties

spring.main.web-environment=false 

the documentation