JavaRush /Курси /Модуль 5. Spring /Використання Spring Boot DevTools

Використання Spring Boot DevTools

Модуль 5. Spring
Рівень 4 , Лекція 7
Відкрита

Spring Boot DevTools — це модуль, створений для прискорення і покращення досвіду розробки додатків на Spring Boot. Його основна задача — скоротити час на перезапуск додатку і допомогти автоматизувати рутинні процеси, як-от перезавантаження після змін, налаштування кешу і навіть оновлення браузера.

Основні можливості Spring Boot DevTools:

  • Автоматичний перезапуск додатку при зміні коду.
  • Вимкнення кешу, щоб розробка проходила швидше (наприклад, щоб зміни в шаблонах Thymeleaf або даних одразу були видимі).
  • LiveReload для автоматичного оновлення браузера при зміні проекту.

Spring Boot DevTools став рятівником для розробників, втомлених від постійного ручного перезапуску додатків після кожної дрібної правки. Це ніби твій «вірний компілятор-робот», який перезапускає сервер за тебе. Зручно, правда?


Підключення Spring Boot DevTools

Почнемо з малого. Щоб скористатися DevTools, треба всього лиш додати залежність у проєкт.

Якщо ти використовуєш Maven, додай наступну залежність у файл pom.xml:


<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <scope>runtime</scope>
</dependency>

Для Gradle зроби те ж саме в build.gradle:


implementation 'org.springframework.boot:spring-boot-devtools'
Важливо!

DevTools призначений лише для розробки. У продуктивному середовищі він неактивний, оскільки його залежності позначені як runtime або developmentOnly. Spring автоматично відключає DevTools у режимі production.


Автоматичний перезапуск додатку

Що відбувається за лаштунками?

Spring Boot DevTools використовує бібліотеку Spring Loaded або Restart ClassLoader, щоб відстежувати зміни у твоєму проєкті. При виявленні змін DevTools автоматично перезавантажує лише змінений код без перезавантаження всього контексту додатку. Це в рази пришвидшує твій процес розробки.

Як це працює?

Якщо все правильно налаштовано, тобі нічого додатково робити не треба. Просто внеси зміни в будь-який файл (будь то Java-код, налаштування в application.properties, файли шаблонів тощо) і збережи їх. Додаток буде перезавантажений автоматично.

Наприклад, у тебе є такий контролер:


@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, DevTools!";
    }
}

Тепер змінимо значення, яке повертає метод sayHello(), на інше, скажімо, "Hello, Spring Boot!". Коли ти збережеш зміни, DevTools автоматично оновить додаток, і нові дані будуть доступні без необхідності зупиняти й запускати сервер вручну.

На що звернути увагу?

  1. DevTools перезавантажує класи, які знаходяться в src/main/java, але ігнорує зміни в залежностях (наприклад, у src/test/java або бібліотеках, підключених через Maven/Gradle).
  2. Якщо зміни стосуються налаштування вбудованого сервера (наприклад, порт або HTTPS-настройки), додаток все одно доведеться перезапустити вручну.

4. LiveReload: автоматичне оновлення браузера

LiveReload — це додаткова можливість DevTools, яка автоматично оновлює браузер, коли ти змінюєш код або файли проєкту. Це особливо корисно при роботі з інтерфейсами або шаблонами (наприклад, якщо ти використовуєш Thymeleaf).

Для використання LiveReload потрібно встановити розширення в браузері. Ось посилання на офіційний сайт LiveReload, де можна завантажити розширення для твого браузера.

Як увімкнути LiveReload?

LiveReload увімкнений у DevTools за замовчуванням. Після запуску додатку переконайся, що розширення LiveReload у браузері активне. Тепер, якщо ти змінеш, наприклад, шаблон Thymeleaf, оновлення сторінки відбудеться автоматично.

Спробуй використовувати такий шаблон Thymeleaf:


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>Hello DevTools</title>
</head>
<body>
  <h1 th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>

Тепер, якщо ти змінеш щось у шаблоні, наприклад h1 на h2, браузер негайно покаже нову версію без ручного перезавантаження сторінки.


Вимкнення DevTools

Ті, хто працює з великими проєктами, знають, що автоматичний перезапуск може бути занадто ресурсозатратним при великому обсязі коду. У таких випадках можна вимкнути DevTools частково або повністю.

Вимкнення автоматичного перезапуску

Змініть файл application.properties:


spring.devtools.restart.enabled=false

Вимкнення LiveReload

Якщо LiveReload не потрібен, додайте в application.properties:


spring.devtools.livereload.enabled=false

Тепер додаток більше не буде автоматично оновлювати браузер.


Налаштування DevTools для максимального комфорту

DevTools можна налаштувати так, як тобі зручно. Ось кілька корисних параметрів для налаштування:

Параметр Опис
spring.devtools.restart.enabled Увімкнення/вимкнення автоматичного перезапуску
spring.devtools.livereload.enabled Увімкнення/вимкнення LiveReload
spring.devtools.restart.additional-paths Додаткові шляхи для відстеження
spring.devtools.restart.exclude Виключення файлів або директорій з нагляду (наприклад, логи)
spring.devtools.remote.secret Захист для віддаленого доступу через DevTools

Приклад використання additional-paths і exclude

Припустимо, у тебе є директорія src/main/resources/static, де зберігаються статичні файли. Ти хочеш, щоб DevTools стежив за змінами в цій папці і перезавантажував додаток. Додай наступне в application.properties:


spring.devtools.restart.additional-paths=src/main/resources/static
spring.devtools.restart.exclude=*.log

Корисні поради та типові помилки

Поради

  • Переконайся, що DevTools додано лише у залежності для розробки. Увімкнення DevTools у production може створити зайві ризики безпеки.
  • Якщо ти працюєш у команді, переконайся, що в усіх розробників однакові налаштування DevTools, щоб уникнути розбіжностей.
  • Використовуй DevTools разом із LiveReload, якщо активно працюєш з UI. Це значно прискорить розробку.

Типові помилки

Іноді DevTools може не перезавантажувати додаток. Перевір наступне:

  • Чи немає помилок у консолі IDE? Деякі бібліотеки можуть конфліктувати з DevTools.
  • Переконайся, що ти працюєш у режимі розробки. У production DevTools неактивний.
  • Якщо зміни не застосовуються, переконайся, що ти вносиш їх у директорію src/main.

Як DevTools допомагає на практиці?

Spring Boot DevTools — це must-have для активних розробників. Він особливо корисний, якщо:

  • Ти постійно модифікуєш контролери, сервіси або шаблони.
  • Ти працюєш у режимі швидкого прототипування, і кожна секунда має значення.
  • Ти плануєш інтегрувати складні UI з backend-частиною.

З DevTools твій робочий процес стане не лише швидшим, а й простішим, дозволяючи зосередитися на найприємнішому — написанні коду.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ