В течение последних двух месяцев я имел удовольствие работать с 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 для отображения информации о проекте в конечной точке информации.