Перейти к основному содержимому

Пользовательская информация в Spring Boot Info Endpoint

· 2 мин. чтения

1. Обзор

В этой быстрой статье мы рассмотрим, как настроить конечную точку /info приводов Spring Boot .

Пожалуйста , обратитесь к этой статье , чтобы узнать больше об исполнительных механизмах в Boot и о том, как их настроить.

2. Статические свойства в /info

Если у нас есть какая-то статическая информация, такая как имя приложения или его версия, которая не меняется в течение длительного времени, то рекомендуется добавить эту информацию в наш файл application.properties :

## Configuring info endpoint
info.app.name=Spring Sample Application
info.app.description=This is my first spring boot application
info.app.version=1.0.0

Это все, что нам нужно сделать, чтобы сделать эти данные доступными в конечной точке /info . Spring автоматически добавит все свойства с префиксом info в конечную точку /info :

{
"app": {
"description": "This is my first spring boot application",
"version": "1.0.0",
"name": "Spring Sample Application"
}
}

3. Переменные среды в /info

Давайте теперь откроем переменную Environment в нашей конечной точке /info :

info.java-vendor = ${java.specification.vendor}

Это предоставит поставщику Java доступ к нашей конечной точке /info :

{
"app": {
"description": "This is my first spring boot application",
"version": "1.0.0",
"name": "Spring Sample Application"
},
"java-vendor": "Oracle Corporation",
}

Обратите внимание, что все переменные среды уже доступны в конечной точке /env . Однако то же самое можно быстро открыть и на конечной точке /info .

4. Пользовательские данные из уровня сохраняемости

Теперь давайте сделаем еще один шаг и предоставим некоторые полезные данные из постоянного хранилища.

Для этого нам нужно реализовать интерфейс InfoContributor и переопределить метод Contributor () :

@Component
public class TotalUsersInfoContributor implements InfoContributor {

@Autowired
UserRepository userRepository;

@Override
public void contribute(Info.Builder builder) {
Map<String, Integer> userDetails = new HashMap<>();
userDetails.put("active", userRepository.countByStatus(1));
userDetails.put("inactive", userRepository.countByStatus(0));

builder.withDetail("users", userDetails);
}
}

Во-первых, нам нужно пометить реализующий класс как @Component . Затем добавьте необходимые данные в экземпляр Info.Builder , предоставленный методу вклада() .

Этот подход дает нам большую гибкость в отношении того, что мы можем предоставить нашей конечной точке /info :

{
...other /info data...,
...
"users": {
"inactive": 2,
"active": 3
}
}

5. Вывод

В этом руководстве мы рассмотрели различные способы добавления пользовательских данных в нашу конечную точку /info .

Обратите внимание, что мы также обсуждаем, как добавить информацию git в конечную точку /info .

Как всегда, полный исходный код этой статьи можно найти на GitHub .