Как совместить Spring Loaded с приложением Vaadin TouchKit?

Я успешно запустил следующий пример (простое веб-приложение Spring): https://www.youtube.com/watch?v=GTrNkhVnJBU

Теперь я хочу использовать Spring Loaded в проекте, основанном на Spring Boot и Vaadin TouchKit.

Когда я вношу изменения (например, новый заголовок для ComboBox), Spring Loaded, кажется, распознает его:

2015-09-03 10:23:08.823  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.823  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.831  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.831  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.842  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.843  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.870  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-09-03 10:23:08.870  INFO 1956 --- [Loader@799dbc3b] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)

Но после обновления моего браузера, нажав F5, я не вижу изменений (заголовок ComboBox остается таким же, как и раньше).

Я что-то упускаю? Нужно ли мне делать что-то еще, прежде чем Spring Loaded заработает с Vaadin TouchKit?

Спасибо за чтение и любые подсказки, которые у вас могут быть заранее!

Редактировать:

Когда я вношу изменения в простой пример веб-приложения Spring, я получаю следующий вывод журнала:

2015-09-03 10:51:06.503  INFO 8388 --- [Loader@14dad5dc] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto java.lang.String ???.???.tests.springloaded.SpringLoadedController.home()
2015-09-03 10:51:06.504  INFO 8388 --- [Loader@14dad5dc] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2015-09-03 10:51:06.504  INFO 8388 --- [Loader@14dad5dc] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest)

Так что контекст "/" там вроде как обновляется, а не в приложении TouchKit.


person Meik Behnfeldt    schedule 03.09.2015    source источник


Ответы (1)


Я создал простой пример проекта с Spring Boot + Spring Loaded + Vaadin по адресу https://github.com/Artur-/spring-boot-loaded-vaadin

Запустив его с помощью mvn install spring-boot:run, вы сможете изменить класс пользовательского интерфейса и увидеть изменения после обновления.

Я не вижу, что изменил бы TouchKit, за исключением случаев, когда у вас есть @PreserveOnRefresh в вашем классе пользовательского интерфейса. В этом случае вам потребуется принудительно создать новый экземпляр пользовательского интерфейса в дополнение к обновлению, добавив ?restartApplication к URL-адресу.

person Artur Signell    schedule 03.09.2015
comment
Спасибо за ваш ответ и проект GitHub. Причиной моей проблемы на самом деле была аннотация @PreserveOnRefresh в моем классе пользовательского интерфейса (после комментирования того, что Spring Loaded работает должным образом, добавление ?restartApplication к URL-адресу по какой-то причине не сработало). Хотя мне не удалось заставить его работать с моим проектом, идея с автоматической перезагрузкой тоже хороша. - person Meik Behnfeldt; 04.09.2015