Прежде чем я обнаружил, что в Spring Boot Info Actuator было почти все, что я хотел опубликовать, я создал несколько мета-конечных точек, чтобы получить доступ к информации о сборке и 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?




Самый простой способ добавить новый элемент в часть "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. ;)