Gestão de Requisitos no Desenvolvimento de Software
A gestão de requisitos no desenvolvimento de software é a “ferramenta” utilizada para garantir que as soluções finais atendam (seria melhor dizer satisfator...
Atualizações de bibliotecas de terceiros
Com a nova versão do Spring Boot, a equipe Spring teve a oportunidade de atualizar várias “dependências”.
thymeleaf-extras-java8time
)Reactive Spring Data & Spring Security
Como o Spring WebFlux, o Spring Data também fornece suporte para aplicações reativas. Atualmente, Cassandra, MongoDB, Couchbase e Redis possuem suporte a APIs reativas. O Spring Boot inclui starter-POMs para todos eles, o que deve facilitar demais.
Também há a possibilidade agora de usar o Spring Security 5.0 nas aplicações reativos. Quando o Spring Security está no classpath, a configuração automática é fornecida para aplicativos WebFlux.
Actuator
O Spring Boot Actuator não é nenhuma novidade, mas foi completamente reescrito. O Actuator expõe os endpoints automaticamente para obter informações sobre esse status de sua aplicação. O Actuator foi escrito para dar suporte aos novos requisitos e funcionalidades providas pelo stack reativo. Algumas das mudanças no Actuator:
Esta pode ser uma área em que as pessoas tenham problemas para atualizar por causa das mudanças no modelo de segurança. Por padrão, todos os endpoints da web estão disponíveis abaixo do caminho /actuator
com URLs na forma /actuator/{id}
. O caminho base do /actuator
pode ser configurado usando a propriedade manage.endpoints.web.base-path
.
Existe um documento detalhado para a Spring Boot Actuator Web API Endpoints disponível aqui.
Segurança Simplificada
No Spring Boot 2.x, um dos principais objetivos foi simplificar a configuração de segurança e facilitar a segurança personalizada. Por padrão, tudo está seguro, incluindo recursos estáticos e os pontos finais do Actuator. Se o Spring Security estiver no classpath, o Spring Boot irá adicionar a anotação @EnableWebSecurity e contar com a negociação de conteúdo do Spring Security para decidir qual mecanismo de autenticação usar.
Uma vez que os desenvolvedores decidam que querem adicionar uma segurança personalizada, a configuração de segurança padrão fornecida pelo Spring Boot será desativada completamente. Neste ponto, os desenvolvedores precisam definir explicitamente todos os bits que desejam proteger. Isso significa que a configuração de segurança está agora em um só lugar e evita qualquer tipo de problemas com os WebSecurityConfigurerAdapters
existentes.
Suporte a HTTP/2
É difícil de acreditar, mas a especificação HTTP 1.1 foi lançada em 1996. Não precisamos nem dizer isso, mas a web de hoje em dia é muito diferente. Se você quiser habilitar o HTTP/2 em suas aplicaçõess Spring MVC ou WebFlux, você pode usar a seguinte propriedade.
server.http2.enabled=true
Claro que isso também depende do servidor web escolhido e do ambiente da aplicação, já que esse protocolo não é suportado “out-of-the-box” a pelo JDK8. Verifique a documentação para obter mais detalhes.
Configuration Properties
No Spring Boot 1.x, essa noção de ligação relaxada (“relaxed binding”) foi suportada e tudo isso significava que havia várias maneiras de criar um nome de propriedade (camel case, underscore, hyphen) e todos se vinculariam à mesma propriedade.
Isso ainda funciona da mesma forma, mas o que eles apertaram foi a maneira como você lê variáveis em seu próprio código. A anotação @Value é um recurso de contêiner central e não fornece os mesmos recursos que as propriedades de configuração type-safe.
Métricas
As métricas do Spring Boot foram substituídas por Micrometer, que está sendo desenvolvido pela Pivotal.
O Spring Boot Actuator fornece gerenciamento de dependência e configuração automática para Micrometer, uma fachada de métricas de aplicações que oferece suporte a vários sistemas de monitoramento, incluindo:
Mais informações sobre o Micrometerm visite https://micrometer.io/
Quartz Scheduler
O Spring Boot 2 fornece suporte para o Quartz Scheduler que pode ser usado através do iniciador dedicado spring-boot-starter-quartz
. Tanto no armazenamento na memória quanto JDBC podem ser configurados.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
HikariCP Connection Pool
O pool de conexão padrão mudou do Tomcat para HikariCP. Se antes era utilizado spring.datasource.type
para forçar o uso do Hikari em uma aplicação baseado no Tomcat, agora não há mais necessidade. Da mesma forma, se preferir ficar com o pool de conexão do Tomcat, basta adicionar o seguinte à sua configuração:
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
Dev Tools
Por padrão, cada vez que a aplicação é reiniciada, um relatório que mostra o delta de avaliação de condição é registrado. O relatório mostra as mudanças na configuração automática da sua aplicação à medida que ocorrem as alterações como, por exemplo, adicionar ou remover beans e definir propriedades de configuração.
Para desativar o registro do relatório, defina a seguinte propriedade:
spring.devtools.restart.log-condition-evaluation-delta=false
JUnit 5
Conforme já dito anteriormente, o padrão para um aplicativo Spring Boot é ainda usar o JUnit 4. Se quiser mudar para o JUnit 5, será preciso excluir JUnit 4 do teste de inicialização inicial do spring boot e adicionar as dependências necessárias.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>${junit-platform.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Este é um post baseado no artigo publicado pelo Dan Vega.
Leave a Comment