Реализация Live Reload для Spring Boot - another-live-refresh

Проектом Spring Developer Tools уже реализована поддержка технологии livereload.com, но есть пару проблем.

Ситуация: мы любим новые технологии и разрабатываем микросервисный проект. У нас есть клиентский интерфейс и административный интерфейс, они оба Spring Boot приложения и они оба запущены. Мы установили расширение livereload.com и оно успешно подключилось к “livereload серверу”,но к какому?

На данный момент LiverReload Server из Spring Developer Tools биндит стандартный порт 35729 при запуске.Когда запускается второе приложение, порт уже занят и запуск сервера невозможен. На практике мы получаем постоянную путаницу, куда подключено расширение, что создает эфект “нерабочего livereload”.

Решением этой проблемы стала библиотека another-live-refresh, оформленная в виде Spring Boot Starter.

Преимущества:

  • легкая и понятная интеграция: в develop профиле включил, в production выключил, других настроек не требует.
  • самостоятельно встраивает в html страницы необходимый js код
  • не требует расширений для браузера
  • работа изолирована внутри каждого приложения
схема работы

рис. 1. Разница реализации

Недостатки:

  • В версии 0.1 не работает на страницах ошибок, работа над этим ведется.

Использование

Подключение зависимости

Все традиционно:

<dependency>
    <groupId>ru.vyukov</groupId>
    <artifactId>another-live-refresh-spring-boot-starter</artifactId>
    <version>0.1.1</version>
    <optional>true</optional>
</dependency>

Последняя версия в Maven Central

Отключение в Production окружении

#liverefresh:
#    enable: включен поумолчанию
  
---
#production profile
 
spring:
  profiles: production

liverefresh:
    enable: false

Так же стоит упоминуть о необходимости отключения кэширования шаблонизаторов в окружении разработки, если это еще не сделано.

# к примеру 
  thymeleaf:
    cache: false

Демонстарция работы

Демонстрация работы

рис. 2. Демонстрация работы

Written on March 12, 2017