2017-09-16 102 views
2

我開始使用Spring Boot 2.0的新Web應用程序。我想用Vaadin 8來提供UI。另外,我想提供一個使用Spring 5提供的WebFlux框架的API接口。在Spring應用程序中使用Vaadin和Spring WebFlux,我如何設置路由?

然而,似乎包括Vaadin在我的build.gradle的行爲導致我WebFlux路線被忽視:

compile('com.vaadin:vaadin-spring-boot-starter') 

當我已經配置Vaadin,我看到它可能在啓動配置本身:

2017-09-16 16:04:52.332 INFO 19413 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration  : Registering Vaadin servlet 
2017-09-16 16:04:52.333 INFO 19413 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration  : Servlet will be mapped to URLs [/vaadinServlet/*, /VAADIN/*] 
2017-09-16 16:04:52.356 INFO 19413 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration  : Setting servlet init parameters 
2017-09-16 16:04:52.356 INFO 19413 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration  : Set servlet init parameter [productionMode] = [false] 
2017-09-16 16:04:52.357 INFO 19413 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration  : Set servlet init parameter [resourceCacheTime] = [3600] 
2017-09-16 16:04:52.357 INFO 19413 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration  : Set servlet init parameter [heartbeatInterval] = [300] 
2017-09-16 16:04:52.357 INFO 19413 --- [ost-startStop-1] c.v.s.b.i.VaadinServletConfiguration  : Set servlet init parameter [closeIdleSessions] = [false] 
2017-09-16 16:04:52.441 INFO 19413 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 
2017-09-16 16:04:52.444 INFO 19413 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'springVaadinServlet' to [/vaadinServlet/*, /VAADIN/*] 

當我刪除Vaadin,我看到配置我WebFlux路線:

2017-09-16 16:07:51.434 INFO 19441 --- [ restartedMain] o.s.w.r.f.s.s.RouterFunctionMapping  : Mapped (Accept: [application/json] && /api) -> /document -> org.springframework.web.reactive.function.server.RouterFunction$$Lambda$203/[email protected] 

我沒有看到Vaadin處於活躍狀態。看起來Vaadin Spring Boot入門套件壓倒一切。

我試着將我的@SpringUI組件的路徑改爲不在根目錄下,但是這並沒有改變任何東西。

我也試過這樣:

@WebServlet(value = "/myspringuis/*", asyncSupported = true) 
public class MySpringServlet extends SpringVaadinServlet { 
} 

我不明白SpringVaadinServlet如何融入這個完全是,但懷疑這是有關我的問題。

是否有可能同時使用Vaadin和WebFlux?我想分開路線,顯然,並有WebFlux句柄/ API/*和Vaadin處理其他一切。

+0

AFAIK Spring Boot 2還沒有Vaading啓動器。 Spring Boot 2.0不是最終版本(也不是它使用的任何Spring項目)。 –

回答

1

vaadin-spring-boot-starter最有可能帶來spring-boot-starter-web(它帶來了一個Servlet容器和配置Spring MVC)。

您不能同時在同一個應用程序中配置Spring MVC和Spring WebFlux。

相關問題