Spring 5

O Spring 5 foi lançado no final de 2017. O Spring 5 traz uma atualização massiva para o framework Spring. O Spring 4 foi lançado em 2013, então todos estavam esperando uma grande revisão do framework. Estou muito feliz em ver os novos recursos no framework Spring.

Recursos do Spring 5

Os recursos do Spring 5 podem ser amplamente divididos nas seguintes categorias:

  • Suporte à Linha de Base do Java
  • Aprimoramentos na API Principal
  • Aprimoramentos no Spring Web MVC
  • Spring WebFlux
  • Programação Funcional com Suporte ao Kotlin
  • Melhorias nos Testes
  • Suporte Obsoleto e Pacotes Removidos

Suporte à Linha de Base do Java

  • O Spring 5 roda no Java 8, então o código Spring pode aproveitar expressões lambda para melhorar a legibilidade do código.
  • O Spring 5 também suporta o Java 9, então podemos criar nossas aplicações em uma arquitetura baseada em módulos também.
  • Spring 5 suporta o Java EE 7 e também é compatível com o Java EE 8. Dessa forma, podemos utilizar Servlet 4.0, Bean Validation 2.0, JPA 2.2 em nossas aplicações. Também é possível utilizar as versões anteriores, ou seja, Servlet 3.1, Bean Validation 1.1, JPA 2.1.
  • As versões preferidas para servidores em aplicações Spring 5 são Tomcat 8.5+, Jetty 9.4+ e WildFly 10+.

I really like that spring 5 is trying to catch up to the latest version of different technologies.

Aprimoramentos na API Principal

  • Declaração de API não nula no nível do pacote. Argumentos, campos e valores de retorno nulos são explicitamente anotados com a anotação @Nullable.
  • Operações de arquivo são realizadas por meio de fluxos NIO 2, ou seja, sem FileInput/Output Stream. Isso é uma grande melhoria e impulso de desempenho para aplicações baseadas em arquivos.
  • O Spring Framework 5.0 vem com sua própria ponte de logística Commons; spring-jcl em vez do Commons Logging padrão.
  • Suporte para fornecer informações de componentes Spring por meio do arquivo de índice “META-INF/spring.components” em vez da varredura do classpath. Isso melhorará significativamente o tempo de inicialização se você tiver um projeto Spring grande e muitos componentes Spring. Também será melhor para os desenvolvedores, pois podemos olhar diretamente nos arquivos especificados para descobrir o ponto de entrada da aplicação, em vez de procurar por todo o classpath.

Melhorias no Spring Web MVC

O módulo Spring MVC passou por uma grande revisão em termos de utilização das tecnologias mais recentes do Java EE. Algumas das principais melhorias são:

  • Suporte completo à assinatura Servlet 3.1 em implementações Filter fornecidas pelo Spring.
  • Suporte para o argumento PushBuilder do Servlet 4.0 em métodos de controle do Spring MVC.
  • MaxUploadSizeExceededException para análise multipart do Servlet 3.0 em servidores comuns.
  • Suporte unificado para tipos de mídia comuns por meio do delegado MediaTypeFactory.
  • Vinculação de dados com objetos imutáveis usando Kotlin, Lombok, @ConstructorProperties.
  • Suporte para a API de Vinculação JSON como uma alternativa ao Jackson e GSON.
  • Suporte para Reactor 3.1 Flux e Mono, bem como RxJava 1.3 e 2.1 como valores de retorno de métodos de controle do Spring MVC.
  • Suporte para ResponseStatusException como uma alternativa programática ao @ResponseStatus.

Spring WebFlux

O Spring WebFlux é o novo módulo, é uma alternativa ao módulo spring-webmvc e construído sobre o framework reativo. Este módulo é usado para criar aplicativos totalmente assíncronos e não bloqueantes construídos no modelo de execução de loop de eventos.

  • Infraestrutura reativa no spring-core, como Encoder e Decoder para codificação e decodificação de fluxos de objetos.
  • @Controller estilo, modelo de programação baseado em anotações, similar ao Spring MVC, mas suportado no WebFlux, executando em uma pilha reativa.
  • Novo WebClient com uma API funcional e reativa para chamadas HTTP, comparável ao RestTemplate mas através de uma API fluente e também se destacando em cenários não bloqueantes e de streaming baseados na infraestrutura WebFlux.

Programação Funcional com Suporte Kotlin

O Spring 5 também suporta programação Kotlin agora. Este é um grande passo em direção ao suporte à programação funcional, assim como o Java também está se movendo em direção à programação funcional.

  • Suporte para API à prova de nulos
  • Suporte para classes Kotlin imutáveis com parâmetros opcionais e valores padrão.
  • Aproveitando os parâmetros de tipo reificado do Kotlin para evitar a especificação explícita da Classe a ser usada para serialização/desserialização em várias APIs como RestTemplate ou APIs WebFlux.
  • Suporte para o construtor Kotlin com fiação automática e parâmetros opcionais.
  • Suporte à segurança nula do Kotlin para @Autowired/@Inject e @RequestParam/@RequestHeader/etc anotações.

Melhorias nos Testes

  • Suporte para JUnit 5
  • Suporte para execução de teste paralela no Spring TestContext Framework

Suporte Obsoleto e Pacotes Removidos

  • Pacotes removidos beans.factory.access, jdbc.support.nativejdbc, mock.staticmock do módulo spring-aspects.
  • Pacotes removidos web.view.tiles2 e orm.hibernate3/hibernate4 abandonados. Isso significa que se você está planejando usar o Spring 5, também precisará usar o Hibernate 5.
  • Abandonou o suporte para tecnologias antigas Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava. Se estiver utilizando alguma delas, migre para outras tecnologias ou mantenha-se com o Spring 4.

Isso resume uma visão rápida das funcionalidades do Spring 5. Referência: Documentação do Spring no GitHub

Source:
https://www.digitalocean.com/community/tutorials/spring-5