A Spring 5 foi lançada no final de 2017. A Spring 5 traz uma atualização massiva para o framework Spring. A Spring 4 foi lançada em 2013, então todos estavam esperando uma grande reformulação do framework. Estou muito feliz em ver as novas funcionalidades no framework Spring.
Funcionalidades da Spring 5
As funcionalidades da Spring 5 podem ser amplamente divididas nas seguintes categorias:
- Suporte à Linha de Base do Java
- Melhorias na API Principal
- Melhorias no Spring Web MVC
- Spring WebFlux
- Programação Funcional com Suporte ao Kotlin
- Melhorias nos Testes
- Suporte a Recursos Descontinuados e Pacotes Removidos
Suporte à Linha de Base do Java
- A Spring 5 é executada no Java 8, permitindo que o código Spring aproveite expressões lambda para melhorar a legibilidade do código.
- A Spring 5 também suporta o Java 9, possibilitando a criação de aplicações com arquitetura baseada em módulos.
- O Spring 5 suporta o Java EE 7 e também é compatível com o Java EE 8. Portanto, podemos usar Servlet 4.0, Bean Validation 2.0, JPA 2.2 em nossas aplicações. Também podemos usar suas versões anteriores, ou seja, Servlet 3.1, Bean Validation 1.1, JPA 2.1.
- As versões preferidas do servidor para 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 da 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 através de fluxos NIO 2, ou seja, sem FileInput/Output Stream. Isso é um grande aprimoramento e melhoria de desempenho para aplicações baseadas em arquivos.
- O Spring Framework 5.0 vem com sua própria ponte de registro Commons Logging;
spring-jcl
em vez do Commons Logging padrão. - Suporte para fornecer informações dos componentes Spring por meio do arquivo de índice “META-INF/spring.components” em vez de fazer varredura no classpath. Isso melhorará muito o tempo de inicialização se você tiver um projeto Spring grande e muitos componentes Spring. Também será melhor para os desenvolvedores, porque podemos procurar diretamente nos arquivos especificados para descobrir o ponto de entrada da aplicação em vez de pesquisar por todos os arquivos no classpath.
Aprimoramentos do Spring Web MVC
O módulo Spring MVC passou por uma grande reformulação em termos de utilização das mais recentes tecnologias Java EE. Alguns dos principais aprimoramentos são:
- Suporte total à assinatura do Servlet 3.1 em implementações de
Filtro
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 Fluxo e Mono assim 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 WebFluxo
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 codificar e decodificar fluxos de objetos.
- @Controller estilo, modelo de programação baseado em anotações, semelhante 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 com base na infraestrutura WebFlux.
Programação Funcional com Suporte para Kotlin
O Spring 5 também suporta programação em 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 imutáveis em Kotlin 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 ao construtor Kotlin autowired com parâmetros opcionais.
- Suporte à segurança nula do Kotlin para @Autowired/@Inject e @RequestParam/@RequestHeader/etc annotations.
Melhorias nos testes
- Suporte para JUnit 5
- Suporte para execução de testes em paralelo no Spring TestContext Framework
Suporte obsoleto e pacotes removidos
- Pacotes removidos
beans.factory.access
,jdbc.support.nativejdbc
,mock.staticmock
do módulospring-aspects
. - Pacotes removidos
web.view.tiles2
eorm.hibernate3/hibernate4
eliminados. Isso significa que se você está planejando usar o Spring 5, também precisará usar o Hibernate 5. - Abandonado suporte para tecnologias antigas Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava. Se estiver usando alguma delas, migre para outras tecnologias ou mantenha-se com o Spring 4.
Isso é tudo para uma visão geral rápida das funcionalidades do Spring 5. Referência: Documentação do Spring GitHub
Source:
https://www.digitalocean.com/community/tutorials/spring-5