BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Spring Boot 2.0 traz melhorias nos actuator endpoint

Spring Boot 2.0 traz melhorias nos actuator endpoint

O release do Spring Boot 2.0.0 M4 traz a infraestrutura do actuator endpoint aperfeiçoado. As mudanças mais significativas incluem:

  • Suporte à Jersey RESTful web services;
  • Suporte a apps reativas web para o WebFlux;
  • Novo mapeamento de endpoint;
  • Criação simplificada de endpoints definidos por usuário;
  • Endpoint de segurança aperfeiçoado.

Os actuator endpoints do Spring Boot permitem monitoramento e interação como aplicações web. Anteriormente, estes endpoints eram suportados somente no Spring MVC e para criar endpoints definidos pelo usuário era necessário uma quantidade significante de código adicional e configuração.

Mapeamento de Endpoint

Endpoints pré definidos como /beans, /health, etc. Por padrão agora são mapeados para o context raiz /application. Isso significa, por exemplo, que /beans nas versões anteriores do Spring Boot agora são acessados via /application/beans.

Criando endpoints definidos pelo usuário

A nova anotação @Enpoint simplificou o processo da criação de endpoints definidos pelo usuário. O exemplo abaixo cria um endpoint chamado person. (O exemplo completo pode ser encontrado no GitHub.)

   
@Endpoint(id = "person")
@Component
public class PersonEndpoint {

    private final Map people = new HashMap<>();

    PersonEndpoint() {
        this.people.put("mike", new Person("Michael Redlich"));
        this.people.put("rowena", new Person("Rowena Redlich"));
        this.people.put("barry", new Person("Barry Burd"));
    }

    @ReadOperation
    public List getAll() {
        return new ArrayList<>(this.people.values());
    }

    @ReadOperation
    public Person getPerson(@Selector String person) {
        return this.people.get(person);
    }

    @WriteOperation
    public void updatePerson(@Selector String name, String person) {
        this.people.put(name, new Person(person));
    }

    public static class Person {
        private String name;

        Person(String name) {
            this.name = name;
        }

        public String getName() {
            return this.name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
}

Esse endpoint expõe os três métodos definidos com as anotações @ReadOperation e @WriteOperation. Nenhum código adicional é necessário e o endpoint é acessado via /application/person e /application/person/{name}. Este endpoint também é automaticamente publicado como um JMX MBean e pode ser acessado por um JMX-client como o JConsole.

Melhorias na segurança de endpoints

O Spring Boot 2.0 tem uma abordagem um pouco diferente para assegurar que os web endpoints são seguros por padrão. Web endpoints agora estão desabilitados por padrão e a propriedade management.security.enabled foi removida. Endpoints individuais podem ser habilitados através do arquivo application.properties. Por exemplo:

endpoints.info.enabled=true
endpoints.beans.enabled=true

Isso é possível, entretanto, para expor todos os endpoints do actuator e definidos pelo usuário através de configurações a propriedade endpoints.default.web.enabled property deve ser igual a true.

Stéphane Nicoll, engenheiro de software na Pivotal, conversou com o InfoQ sobre os actuator endpoints.

InfoQ: Como você descreveria a experiência em atualizar os actuator endpoints para suportar o Jersey e WebFlux?

Nicoll: Suportar tantos ambientes baseados em servlet como apps web reativas é um desafio, especialmente ao lidar com conjuntos extensivos de funcionalidades.

InfoQ: O Spring é famoso pelo fornecimento de uma API concisa e bem pensada. Como foi tratada essa refatoração?

Nicoll: Tivemos várias iniciativas na equipe do framework com o "spring-webmvc" e o "spring-webflux" compartilhando uma grande quantidade de funcionalidades do "spring-web". Construir abstrações que funcionam é difícil e eu estou feliz que estamos fazendo isso novamente em outro nível.

InfoQ: Quais foram as diretivas utilizadas para a arquitetura?

Nicoll: O Spring Boot 2.0 é principalmente orientado à criação de fundações firmes e uma base sólida para construir: acreditamos que a nova infraestrutura de endpoint está no caminho certo para produção e estamos ansiosos pelo feedback da comunidade.

InfoQ: Quando teremos a versão antecipada do Spring Boot 2.0 GA?

Nicoll: As coisas ainda estão acontecendo, mas nosso plano atual é lançar o Spring Boot 2.0 GA no final deste ano.

Recursos

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT