O Spring Framework 5 foi lançado, depois de mais ou menos 4 anos trabalhando com a versão 4 do framework. Então, vem comigo, para você não ficar pra trás.
Claro que não dá para acompanharmos tudo o que evolui no mercado, mas você, como um programador Spring, precisa ter uma boa noção de como está o andamento desse framework. E é justamente isso que você e eu estamos fazendo agora: nos atualizando.
Agora, relaxa aí, que esse é um daqueles artigos rapidinhos de ler, e nem vai te deixar com a consciência pesada por não executar o código de exemplo, simplesmente, porque não tem.
Vamos lá?
O que tem de novo no Spring Framework 5?
As duas maiores novidades, sem dúvida, são a nova baseline com Java 8 e o suporte a programação reativa (Spring WebFlux). Além desses dois pontos, ainda podemos destacar:
- Revisão no núcleo do framework
- Pacotes, classes e métodos descontinuados
- Spring Web MVC
- Melhorias para os testes unitários
Aprofundando um pouquinho mais, veremos alguns detalhes dessas novidades da versão 5.
Nova linha de base com JDK 8+ e Java EE 7+
Agora, o mínimo que você precisa para usar o Spring Framework 5 é o Java 8. Toda a linha de base agora está em cima dessa versão do Java. E é fácil imaginar os benefícios, não é mesmo? Isso deixou o código mais legível, principalmente, pelo uso de generics, lambdas, etc.
E para quem esperou tanto pelo Java 9, o framework também é compatível com essa versão. Chegou até a se cogitar em ter Java 9 como linha de base, mas isso acabou sendo deixado de lado para que essa dependência não impedisse a entrega do Spring 5.
Em nível de API, ele é compatível com Java EE 8 e atende aos requisitos do Servlet 4.0, Bean Validation 2.0 e a nova JSON Binding API. Dentre outros, já foi testado com Tomcat 9.0 e Hibernate Validator 6.0, sendo que o Java EE 7 é o mínimo requerido.
Programação reativa (Spring WebFlux)
Uma novidade bem forte do framework é a programação reativa, através do framework Spring WebFlux. Ele é uma alternativa ao Spring MVC, que segue os princípios da reatividade e é totalmente assíncrono e não-bloqueante. Nesse modelo de programação, é possível escalar a aplicação verticalmente com um número menor de threads.
A boa notícia é que o Spring WebFlux é bem parecido com o já existente Spring MVC, ou seja, você vai aproveitar o que já conhece de programação web com esse framework, caso queira entrar no mundo reativo. Inclusive, eles podem até ser usados na mesma aplicação.
Claro que isso não é o fim do Spring MVC. Nem toda aplicação precisa desse tipo de solução, que é mais complexa, por isso o Spring MVC ainda vai continuar sendo usado.
Revisão no núcleo do framework
O código-fonte do Spring Framework 5 não é só totalmente compatível com Java 8, como também foi revisado para poder se beneficiar do uso de todas as funcionalidades do mesmo.
Aqui entra, por exemplo:
- O uso de lambdas
- Da API de reflexão mais recente
- O uso de default methods nas interfaces
- Uso das anotações
@Nullable
e@NotNull
, para marcar parâmetros e retornos que permitem ou não valores nulos. Assim, vai ser possível evitar alguns “NullPointerException” em tempo de compilação - Ao invés do Commons Logging, o Spring 5 vem com seu próprio integrador de logs, que irá auto-detectar o Log4j 2.x, SLF4J, JUL (java.util.logging), sem nenhum intermediário
Pacotes, classes e métodos descontinuados
Nessa nova versão, tivemos também alguns pontos do framework que foram descontinuados. Dentre esses pontos, temos alguns pacotes, que são:
beans.factory.access
jdbc.support.nativejdbc
mock.staticmock
do módulo spring-aspectsweb.view.tiles2
– Agora, é necessário o Tiles na versão 3orm.hibernate3
eorm.hibernate4
– A versão suportada agora é o Hibernate 5
Ainda tivemos a remoção de suporte das seguintes bibliotecas:
- Portlet
- Velocity
- JasperReports
- XMLBeans
- JDO
- Guava
Caso você precise do suporte para essas bibliotecas e/ou pacotes, é recomendado que você se mantenha na versão 4.3.x do framework.
Spring Web MVC
A prova de que o Spring Web MVC ainda está bem vivo, são as novidades que tivemos para ele nessa nova versão.
Primeiro, que ele está integrado com o WebFlux, e foi atualizado para utilizar a nova JSON Binding API do Java EE 8 e ainda as versões do Jackson 2.9 e Protobuf 3.
Saiu também o suporte para PushBuilder
do Servlet 4.0, como argumento de métodos de um controlador do Spring MVC.
Ainda temos o suporte para retornar Reactor 3.1 Flux
, Mono
, e RxJava 1.3 e 2.1 a partir de métodos dos controladores, visando o uso do novo WebClient
reativo ou em repositórios reativos do Spring Data.
Melhorias para os testes unitários
Nesse ponto foi implementado o suporte completo para JUnit 5. Temos também o suporte para execução de testes paralelos com Spring TestContext Framework.
Para testes em sistemas reativos, o Spring trouxe o WebTestClient, que de maneira parecida ao MockMvc, não precisa de um servidor rodando.
Conclusão
Tivemos várias coisas legais nessa nova versão do Spring Framework, mas, sem dúvida, as maiores são a entrada do framework no mundo reativo e a linha de base com o Java 8.
O legal também é que essas mudanças vão disparar várias outras nos outros frameworks do ecossistema Spring, como o Spring Security, Spring Data, Spring Integration, etc, sem contar que é sempre empolgante ver que o framework que usamos está a todo vapor.
Se você deseja baixar o Spring manualmente, então pode entrar no site spring.io. Mas…
Para quem deseja entrar nesse mundo da alta produtividade no desenvolvimento com Spring, aconselho que faça agora o download do nosso e-book Produtividade no Desenvolvimento de Aplicações Web com Spring Boot.
Espero que tenha gostado de conhecer as novidades do Spring Framework 5. :)
No mais, um abraço pra você e até uma próxima!
Olá,
o que você achou deste conteúdo? Conte nos comentários.