Informações personalizadas no ponto de extremidade de informações de inicialização do Spring
1. Visão geral
Neste artigo rápido, veremos como personalizar o ponto de extremidade/info do Spring Boot Actuators.
Por favor,refer to this article para saber mais sobre atuadores no Boot e como configurá-los.
2. Propriedades estáticas em / info
Se tivermos algumas informações estáticas como o nome do aplicativo ou a versão que não muda por um longo tempo, é uma boa ideia adicionar esses detalhes em nosso arquivoapplication.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
Isso é tudo que precisamos fazer para disponibilizar esses dados no endpoint/info. O Spring adicionará automaticamente todas as propriedades prefixadas cominfo ao endpoint/info:
{
"app": {
"description": "This is my first spring boot application",
"version": "1.0.0",
"name": "Spring Sample Application"
}
}
3. Variáveis de ambiente em / info
Vamos agora expor uma variávelEnvironment em nosso endpoint/info:
info.java-vendor = ${java.specification.vendor}
Isso irá expor o fornecedor Java ao nosso endpoint/info:
{
"app": {
"description": "This is my first spring boot application",
"version": "1.0.0",
"name": "Spring Sample Application"
},
"java-vendor": "Oracle Corporation",
}
Observe que todas as variáveis de ambiente já estão disponíveis no endpoint/env. No entanto, o mesmo pode ser exposto rapidamente no endpoint de/info também.
4. Dados personalizados da camada de persistência
Agora vamos dar um passo adiante e expor alguns dados úteis do armazenamento de persistência.
Para conseguir isso, precisamos implementar a interfaceInfoContributor e substituir o métodocontribute():
@Component
public class TotalUsersInfoContributor implements InfoContributor {
@Autowired
UserRepository userRepository;
@Override
public void contribute(Info.Builder builder) {
Map userDetails = new HashMap<>();
userDetails.put("active", userRepository.countByStatus(1));
userDetails.put("inactive", userRepository.countByStatus(0));
builder.withDetail("users", userDetails);
}
}
A primeira coisa é que precisamos marcar a classe de implementação como@Component. Em seguida, adicione os detalhes necessários à instânciaInfo.Builder fornecida ao métodocontribute().
Essa abordagem nos fornece muita flexibilidade em relação ao que podemos expor ao nosso endpoint/info:
{
...other /info data...,
...
"users": {
"inactive": 2,
"active": 3
}
}
5. Conclusão
Neste tutorial, vimos várias maneiras de adicionar dados personalizados ao nosso endpoint/info.
Observe que também estamos discutindo como adicionargit information ao endpoint/info.
Como sempre, o código-fonte completo deste artigo pode ser encontradoover on GitHub.