Статьи

Отключить готовые услуги по загрузке пружин

В течение последних двух месяцев я имел удовольствие работать с  The Lampo Group,  разрабатывая REST-сервисы на основе Hypermedia, используя  Spring Boot . Spring Boot упрощает написание REST-сервисов. Одним из его самых больших преимуществ по умолчанию является включение tomcat в качестве контейнера сервлета, что позволяет разработчику сосредоточиться на других важных вещах. Еще одна замечательная особенность Spring Boot — это возможность легко включить то, что они называют «  Готовым к производству». или Услуги производственного уровня. Эти сервисы позволяют вам контролировать и управлять вашим приложением, когда оно запущено в производство, и это так же просто, как добавить зависимость в ваш проект. К сожалению, не было хорошо задокументировано, как отключить некоторые из этих сервисов. Но прежде чем я покажу вам, как их отключить, позвольте мне сначала показать вам, как включить их.

Включение
готовых к работе сервисов Spring Boot Одной из причин, по которой мы хотели включить некоторые готовые к работе сервисы, была наша целевая производственная среда — Amazon Web Services (AWS). В качестве части этого они поддерживают Elastic Load Balancing, которая позволяет настроить  проверку работоспособности конечная точка. Это в основном конечная точка, которую вы настраиваете в AWS, которая проверяется, чтобы убедиться, что экземпляр EC2 запущен и работает. По счастливой случайности, одним из сервисов, включенных в готовые к работе сервисы Spring Boot, была конечная точка работоспособности.

Чтобы включить готовые к работе сервисы, все, что вам нужно сделать, это добавить зависимость в ваш проект. Если вы используете Maven, все, что вам нужно сделать, это добавить следующее к вашему  pom.xml.

<dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-actuator</artifactid>
    <version>1.1.4.RELEASE</version>
</dependency>

После внесения изменений  pom.xmlпросто перестройте проект, и вы сможете получить доступ http://localhost:8080/health и увидеть что-то вроде этого:

Он не только добавляет конечную точку работоспособности, но также добавляет: autoconfig, bean, configprops, dump, env, info, метрики, сопоставления, завершение работы (не включено по умолчанию через HTTP) и трассировку. Как и мы, вы можете не захотеть выставлять все эти конечные точки в производственной среде. Фактически, все, что мы хотели включить, были конечными точками здоровья и информации. Далее будет показано, как отключить каждую службу в отдельности и как их динамически повторно включить во время выполнения.

Отключение готовых к работе сервисов Spring Boot
Когда вы включаете в ваш проект зависимость spring-boot-starter-activator, она автоматически предоставляет 11 различных конечных точек в вашем проекте. Я хотел отключить все конечные точки, кроме работоспособности и информации, а также иметь возможность включать другие службы во время выполнения через переменные среды.

Чтобы отключить некоторые из готовых к работе сервисов, добавьте в свой  /src/main/resources файл следующее. Это будут ваши настройки по умолчанию для вашего проекта.

endpoints.autoconfig.enabled=false
endpoints.beans.enabled=false
endpoints.configprops.enabled=false
endpoints.dump.enabled=false
endpoints.env.enabled=false
endpoints.health.enabled=true
endpoints.info.enabled=true
endpoints.metrics.enabled=false
endpoints.mappings.enabled=false
endpoints.shutdown.enabled=false
endpoints.trace.enabled=false

Чтобы включить / отключить внешние точки во время выполнения, вы можете выполнить любой из этих  шагов . Поскольку наш проект следует  правилам 12-факторного приложения, нам требовалась возможность включать / отключать конечные точки путем установки переменных среды. Так, например, если бы я хотел включить конечную точку метрики во время выполнения, я бы установил следующую переменную среды.

export ENDPOINTS_METRICS_ENABLED=true

После перезапуска Sprint Boot вы можете получить доступ к конечной точке метрики по адресу  http://localhost:8080/metrics. Обратите внимание, что в версии 1.0.1.RELEASE вы не можете отключить конечную точку отображений, но это было быстро  исправлено  в 1.1.3.RELEASE.

Таким образом, меня очень впечатлило, насколько легко работать с Spring Boot и готовыми к работе сервисами. В другой статье я расскажу, как использовать фильтрацию maven вместе с  плагином git-commit-id-plugin для отображения информации о проекте в конечной точке информации.