Novidades do Spring Framework 5

Postado por em   ●   40 comentários

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-aspects
  • web.view.tiles2 – Agora, é necessário o Tiles na versão 3
  • orm.hibernate3 e orm.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 FluxMono, 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.

Ebook 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!

É graduado em Sistemas de Informação, trabalha como instrutor na AlgaWorks e está no mercado de programação Java há mais de 9 anos, principalmente no desenvolvimento de sistemas corporativos.

40 comentários sobre “Novidades do Spring Framework 5

  1. Jean -

    Alexandre, como fica a questão dos relatórios já que removeram a integração com o JasperReports?

    1. Alexandre Afonso Autor do post-

      Jean, a recomendação para quem precisa do suporte para JasperReports é continuar na versão 4.x do Spring. Quem quiser usar a 5 vai precisar usar diretamente a API do Jasper para poder criar o relatório. Você pode mandar gerar o relatório e devolver os bytes dele na resposta do seu método no controlador.

      Abraço!

  2. Rhadamez -

    Quanto ao JasperReports, foi introduzida um novo Exporter API, certo? continuaremos conseguindo fazer essa integração?

    1. Alexandre Afonso Autor do post-

      Olá Rhadamez!

      Estava até aqui comentando com o Jean… Sim, mas agora vai ser preciso usar a API do Jasper diretamente para gerar o relatório e enviar o arquivo referente na resposta do método controlador.

      Abraço!

  3. Marcelo Sartor -

    No curso de Spring utilizamos o Guava e o Jasper.
    Vai ter alguma aula extra para migrarmos para o Spring 5?

    1. Alexandre Afonso Autor do post-

      Sim Marcelo! Teremos aulas extras para deixar o projeto compatível com o Spring Framework 5.

      Abraço!

  4. Jean -

    Bem lembrado Marcelo Sartor, seria interessante uma atualização do curso para o projeto brewer ficar atualizado, e adquirirmos conhecimento para projetos futuros.

    1. Alexandre Afonso Autor do post-

      Oi Jean!

      Estava até respondendo aqui o comentário do Marcelo e sim, teremos aulas para deixar o projeto compatível com a versão 5.

      Abraço!

  5. Rafael Sousa -

    Pensei que essa tinha sido uma dúvida apenas minha quando disseram que o Spring 5 não dá mais suporte ao JasperReports, mas vejo que não. E como fica mesmo a questão dos relatórios?

    1. Alexandre Afonso Autor do post-

      Olá Rafael!

      O suporte foi removido. A recomendação, para quem ainda precisa desse suporte, é se mantar na versão 4.3.x. A partir de agora a gente precisa utilizar a API do Jasper diretamente, gerar o relatório e colocar os bytes do arquivo na resposta da requisição.

      Abraço!

  6. Jean -

    Alexandre, bom saber que irão atualizar o projeto :) isso é muito importante para todos os alunos, esse é um dos diferenciais de vocês não fazem o curso e depois o abandonam, continuem assim que isso só aumenta a credibilidade da empresa.
    Quando ao webflux, planejam fazer algo workshop, oficina ou curso?

    1. Alexandre Afonso Autor do post-

      Sim Jean. Essa mudança de versão é um marco importante para quem desenvolve com Spring. Não podíamos ficar sem atualizar. :)

      Sobre o Webflux, ainda não temos planos para incluí-lo em um curso, mas isso já é discussão aqui na AlgaWorks.

      Abraço!

  7. Orlando -

    Já li sugestões como se utilizar o Dynamic Jasper ou o DynamicReports para os relatórios. Alguém chegou a utilizar alguma dessas APIs?

    1. Alexandre Afonso Autor do post-

      Infelizmente, ainda não utilizei Orlando, não posso falar sobre. Mas é um projeto bem interessante ainda mais para quem precisa de muitos relatórios.

      Abraço!

  8. João Rafael -

    Estou com duvida também de como fica a questão dos relatórios, então não poderemos usar JasperReports no Spring 5?

    1. Alexandre Afonso Autor do post-

      Ainda poderemos sim João. Só não vai ter a view do Jasper como tinha antes. Agora nós temos que gerar o arquivo diretamente pela API e jogar os bytes do mesmo na resposta da requisição.

      Abraço!

  9. Alexandre -

    Alexandre Afonso,

    Sugiro escrever um artigo sobre programação reativa.

    1. Alexandre Afonso Autor do post-

      Alexandre, valeu pela sugestão! Estamos justamente vendo sobre esse tipo de interesse dos alunos e leitores. Caso a gente note um bom nível de interesse dos leitores, a gente vai começar a criar conteúdos sobre esse tema.

      Abraço!

  10. Jeferson -

    Legal, a evolução da tecnologia que vou passar a estudar é super empolgante da para iniciantes como eu a sensação de estar no caminho certo.

    1. Alexandre Afonso Autor do post-

      Sim Jeferson, também acho. Com certeza, é mais segurança pra gente que programa com Spring.

      Abraço!

  11. Douglas Andrade -

    Mais uma vez Algaworks parabéns por apresentar conteúdos atualizados, alta satisfação em ser aluno.
    Alexandre, se puder trazer mais detalhes nos próximos posts sobre programação reativa com Spring WebFlux, obrigado pelo trabalho dedicado. Gostei muito da artigo.

    1. Alexandre Afonso Autor do post-

      Opa! Mais um voto aqui para o Webflux. Hehe…

      Douglas, estava comentando com o meu xará, mais acima, justamente, que estamos vendo sobre o interesse dos alunos nesse tema para começar a investir em conteúdos com esse tema.

      Abraço!

  12. Andre Nunes -

    parabéns! excelente conteúdo, aprendendo cada vez mais….

    abraço.

    1. Alexandre Afonso Autor do post-

      Bacana que está ajudando na sua jornada André. :)

      Valeu, e abraço!

  13. Manoel -

    Parabéns, por divulgar as novidades Spring, obrigado

    1. Alexandre Afonso Autor do post-

      Grato pelos parabéns Manoel. :)

  14. Nicolas -

    Só tenho a agradecer a vocês, pela surpresa positiva de cada dia! Parabéns!!!

    1. Alexandre Afonso Autor do post-

      Opa! Valeu Nicolas!

      Agradeço aqui em nome de todos: Grato!

      Abraço!

  15. Osmael -

    Opa Alexandre, tem alguma previsão para a atualização do curso Spring Expert em relação ao JasperReports?

    1. Alexandre Afonso Autor do post-

      Olá Osmael!

      Eu já até peguei o projeto para atualizar para versão 5 e observar como ele se comporta, mas ainda não posso dar uma data. Acredito que até o final do ano a gente já tenha gravado essa aula.

      Até!

  16. Jean -

    Alexandre, quando atualizar o curso como os alunos ficaram sabendo?

    1. Alexandre Afonso Autor do post-

      Jean, acredito que o Thiago irá mandar um e-mail para os alunos.

      Abraço!

  17. Ricardo -

    Alexandre ótimo artigo.
    O curso de Spring Express além de integrar o Spring 5 irá sofrer outras atualizações Como criação de novos módulos, criação de componentes de paginação com o HandleBars nas popups de buscas e na tabela de itens na tela mestre detalhe?

    1. Alexandre Afonso Autor do post-

      Ricardo, a previsão para o curso Spring Framework Expert é da criação de um capítulo para atualização do projeto para o Spring Framework 5. Também criaremos aulas para atualizar o projeto para o Spring Boot 2. Mas, de novas funcionalidades, ainda não.

      Abraço!

  18. Ricardo -

    Alexandre tem previsão de novos cursos de Spring e Angular com recursos mais avançados?

    1. Alexandre Afonso Autor do post-

      Olá Ricardo!

      Acreditamos que no começo de 2018 já teremos algo nessa linha.

      Abraço!

  19. Markes -

    Mas não foi falado onde se baixa essa encrenca do Spring Framework.
    Um link real onde se pode baixar o Spring?

    1. Alexandre Afonso Autor do post-

      Olá Markes!

      Eu não havia colocado link porque a gente não ensina Spring baixando ele manualmente. Se você baixar nosso e-book, vai ver que nossa estrutura vai baixar tudo que precisa do Spring automaticamente.

      De qualquer forma, eu coloquei um link no artigo (na parte de conclusão) para quem desejar acessar o site. :)

      Abraço!

  20. Leonardo -

    Parabéns pelo artigo! Deu uma visão bem completo da nova versão do Spring 5.

    Estou iniciando no curso de Spring e gostando muito! Abraços!

    1. Alexandre Afonso Autor do post-

      Valeu Leonardo!

      Bacana que está fazendo o curso. :)

      Forte abraço!

Deixe um comentário