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ódulospring-aspects
. - Pacotes removidos
web.view.tiles2
eorm.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