Расширение GitInfoContributor для добавления свойств?

Прежде чем я обнаружил, что в Spring Boot Info Actuator было почти все, что я хотел опубликовать, я создал несколько мета-конечных точек, чтобы получить доступ к информации о сборке и Git, которая поможет при проверке таких вещей, как:

  • "Правильная ли версия развернута?"
  • "Кто это построил?"
  • "Когда это было построено?"
  • "На каком git-коммите это основано?"

После этого я обнаружил, что активатор Info отвечает почти на все эти вопросы для меня, но есть несколько вещей из информации Git, которые я хотел бы добавить - в основном сообщение о фиксации и грязный флаг.

Я посмотрел на вывод, если я включу полные метаданные git с помощью:

management.info.git.mode=full

Но ... это добавляет гораздо больше информации, большая часть которой меня не волнует, так что это больше, чем я действительно хочу.

Я бы хотел взять GitInfoContributor и расширить / заменить его, но я не совсем уверен, как это сделать. Добавить своего участника легко, но если я добавлю своего участника и вызову builder.withDetails ("git"), например:

package ca.cpp.api.submitapi.config

import org.springframework.boot.actuate.info.Info
import org.springframework.boot.actuate.info.InfoContributor
import org.springframework.boot.info.GitProperties
import org.springframework.stereotype.Component

@Component
class CustomGitInfoContributor(private val properties: GitProperties): InfoContributor {
    override fun contribute(builder: Info.Builder?) {
        builder?.withDetail("git",mapOf("dirty" to properties.get("dirty"))
    }
}

Это заменяет весь набор свойств git, а пока я думаю, что ядро ​​GitInfoContributor все еще будет там, по-прежнему предоставляя информацию, которую я выбрасываю.

Есть ли разумный способ добавить только те элементы, которые я хочу, либо с моим собственным участником, который может объединить свою информацию с информацией, уже находящейся в «git», либо каким-то образом расширить / заменить существующий GitInfoContributor?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
0
786
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самый простой способ добавить новый элемент в часть "git" - это расширить GitInfoContributor.

Котлин:

@Component
class CustomGitInfoContributor @Autowired
constructor(properties: GitProperties) : GitInfoContributor(properties) {

    override fun contribute(builder: Info.Builder) {
        val map = generateContent()
        map["dirty"] = properties.get("dirty")
        builder.withDetail("git", map)
    }
}

Джава:

@Component
public class CustomGitInfoContributor extends GitInfoContributor {

  @Autowired
  public CustomGitInfoContributor(GitProperties properties) {
    super(properties);
  }

  @Override
  public void contribute(Info.Builder builder) {
    Map<String, Object> map = generateContent();
    map.put("dirty", getProperties().get("dirty"));
    builder.withDetail("git", map);
  }
}

Этот код добавит грязную часть после информации git по умолчанию, например. {"git":{"commit":{"time":"2018-11-03T15:22:51Z","id":"caa2ef0"},"branch":"master","dirty":"true"}}

Если вы не хотите создавать часть информации git по умолчанию, просто удалите вызов generateContent().

Работает как шарм - я добавил еще несколько свойств, но ваши примеры соответствуют концепции, и я ценю усилия по включению примеров Kotlin и Java. ;)

Geoffrey Wiseman 06.11.2018 01:50

Другие вопросы по теме