Informações personalizadas no ponto de extremidade de informações de inicialização do Spring

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.