Spring Boot инструменты разработчика

Spring Boot включает в себя дополнительный набор инструментов, которые могут сделать процесс разработки приложений более приятным. Модуль spring-boot-devtools может быть включен в любой проект для предоставления дополнительных функций времени разработки. Чтобы включить поддержку devtools, добавьте зависимость модуля в свою сборку, как показано в следующих листингах для Maven и Gradle:

Maven

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

Gradle

configurations {
    developmentOnly
    runtimeClasspath {
        extendsFrom developmentOnly
    }
}
dependencies {
    developmentOnly("org.springframework.boot:spring-boot-devtools")
}

Инструменты разработчика автоматически отключаются при запуске полностью упакованного приложения. Если ваше приложение запускается из java -jar или если оно запускается из специального загрузчика классов, то оно считается «производственным приложением». Если это не относится к вам (т. е. если вы запускаете приложение из контейнера), рассмотрите возможность исключения devtools или установите системное свойство -Dspring.devtools.restart.enabled=false.

Пометка зависимости как необязательной (optional) в Maven или использование настраиваемой конфигурации developmentOnly в Gradle (как показано выше) - это лучший метод, который предотвращает транзитное применение devtools к другим модулям, которые используют ваш проект.

Переупакованные архивы по умолчанию не содержат devtools. Если вы хотите использовать определенную удаленную функцию devtools, вам нужно отключить свойство сборки excludeDevtools, чтобы включить его. Свойство поддерживается как плагинами Maven, так и Gradle.

Свойства по умолчанию

Несколько библиотек, поддерживаемых Spring Boot, используют кэши для повышения производительности. Например, движки шаблонов кэшируют скомпилированные шаблоны, чтобы избежать многократного анализа файлов шаблонов. Кроме того, Spring MVC может добавлять заголовки кэширования HTTP к ответам при обслуживании статических ресурсов.

Хотя кэширование очень полезно в производственной среде, оно может быть непродуктивным во время разработки, мешая вам увидеть изменения, которые вы только что внесли в свое приложение. По этой причине spring-boot-devtools отключает параметры кэширования по умолчанию.

Параметры кэша обычно настраиваются параметрами в вашем файле application.properties. Например, Thymeleaf предлагает свойство spring.thymeleaf.cache. Вместо того, чтобы устанавливать эти свойства вручную, модуль spring-boot-devtools автоматически применяет разумную конфигурацию времени разработки.

Поскольку при разработке приложений Spring MVC и Spring WebFlux требуется больше информации о веб-запросах, инструменты разработчика включат ведение журнала DEBUG для группы веб-журналов. Это даст вам информацию о входящем запросе, какой обработчик его обрабатывает, результат ответа и т. д. Если вы хотите записать все детали запроса (включая потенциально конфиденциальную информацию), вы можете включить spring.http.log-request-details свойство конфигурации.

Если вы не хотите, чтобы свойства по умолчанию применялись, вы можете установить для spring.devtools.add-properties значение false в вашем application.properties.

Полный список свойств, которые применяются devtools, смотрите в DevToolsPropertyDefaultsPostProcessor.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки