Do Spring Framework 4 para o 5

Spring Framework 4 – WebMvcConfigurerAdapter

Olá, neste post vou dar uma dica rápida sobre uma pequena mudança que ocorreu na versão 5 do Spring Framework em relação as versões anteriores. A dica em questão é sobre a configuração programática da classe referente ao uso do Spring MVC. Antes da versão 5 ser lançada, estendiamos a classe abstrada WebMvcConfigurerAdapter em nossa configuração, como mostra o exemplo a seguir:

@Configuration
@EnableWebMvc
public class SpringMvcConfig extends WebMvcConfigurerAdapter {
    // beans 
}

Porém, a classe WebMvcConfigurerAdapter foi marcada com @Deprecated no Spring 5. E em alguns cursos que já desenvolvi utilizando o Spring 4, alguns alunos ansiosos por mudar a versão para o Spring 5 se deperam com essa questão e ficam sem saber como agir. 

Spring Framework 5 – WebMvcConfigurer

Então, lendo a própria documentação da classe WebMvcConfigurerAdapter é possível encontrar a solução. Nessa documentação temos a seguinte instrução:

/**
 * An implementation of {@link WebMvcConfigurer} with empty methods allowing
 * subclasses to override only the methods they’re interested in.
 *
 * @author Rossen Stoyanchev
 * @since 3.1
 * @deprecated as of 5.0 {@link WebMvcConfigurer} has default methods (made
 * possible by a Java 8 baseline) and can be implemented directly without the
 * need for this adapter
 */


Veja que na parte referente a @deprecated temos um link para WebMvcConfigurer o qual vai nos direcionar para a interface  de mesmo nome. Essa interface substitui a classe abstrata WebMvcConfigurerAdapter. Sendo assim, a declaração da classe de configuração do Spring MVC na versão 5 seria como a descrita a seguir:

@Configuration
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {
    // beans
}

E os métodos que antes eram sobrescritos a partir de WebMvcConfigurerAdapter? Eles ainda podem ser sobrescritos, já que WebMvcConfigurerAdapter possui a mesma lista de métodos que a interface WebMvcConfigurer. Por sinal, WebMvcConfigurerAdapter estende a interface WebMvcConfigurer.

Mas se agora faremos uso da interface WebMvcConfigurer, teremos então que implementar todos seus métodos? Não, se você analisar o código fonte da interface verá que todas as assinaturas de métodos lá contidas são do marcadas como default. Um recurso incluído no Java 8 que faz com que métodos marcados com esta instrução não são obrigados a conter uma implementação em classes concretas que implementam a interface.

Bem, fica a dica caso você tenha resolvido alterar a versão do Spring 4 para a 5 em seus projetos e ficou perdido ao se deparar com essa situação. 

Saiba mais sobre: 

  • Default Methods – https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html
  • Doc WebMvcConfigurer – https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/config/annotation/WebMvcConfigurer.html 

Ballem

Marcio Ballem é bacharel em Sistemas de Informação pelo Centro Universitário Franciscano em Santa Maria/RS. Tem experiência com desenvolvimento Delphi e Java em projetos para gestão pública e acadêmica. Possui certificação em Java, OCJP 6.

Você pode gostar...