Fala Leandro, tudo bem ?
Muito bem observada essa questão. Mandou bem! Realmente é parte necessária da configuração do Spring MVC a liberação aos recursos estáticos que serão servidor pelo próprio container servlet que vai ser utilizado. Na gravação o instrutor está utilizando arquivos que são disponibilizados via web por outro servidor, onde a app da Casa do Código está implantada, por isso no vídeo não foi necessário nenhum ajuste de configuração.
Existem algumas formas de fazer o mesmo ajuste observado por você. A forma como você fez é uma delas. Para registro comento abaixo algumas outras.
Em caso de configuração xml based, poderíamos utilizar a tag <mvc:default-servlet-handler/>
dentro do arquivo xml de configuração utilizado pelo spring, no conteúdo da tag principal <beans>
.
A forma programática equivalente a tag apresentada acima é a sobrescrita do método configureDefaultServletHandling(...)
, herdado também de WebMvcConfigurerAdapter
. Exemplo:
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
Outra forma ainda baseada em xml seria o registro de fontes liberadas de recursos. Exemplo:
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/images/**" location="/images/" />
ou mesmo generalizando:
<mvc:resources mapping="/resources/**" location="/resources/" />
Que tem como equivalente na configuração programática exatamente a sobrescrita do método addResourceHandlers(...)
, como foi bem observado:
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
Assim que possível vou adicionar nessa aula (aula 10) um exercício explicando essas variações de configuração necessárias.
Espero ter ajudo. Abraço e bons estudos!