Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Atualização] Resources não são carregados na aula 10

Eu assisti a aula 10 e fiz as atividades mas os resources (CSS, JS) não eram carregados na página dava erro 404 no console da ferramenta do desenvolvedor. Então eu consegui resolver esse problema da seguinte forma:

1 - Na classe AppWebConfiguration Extendi a classe WebMvcConfigurerAdapter

2- Fiz o seguinte método:

@Override
 public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
    }

Eu acredito que essa aula no curso está faltando essa configuração porque pelo que eu pesquisei isso é uma configuração padrão do Spring para os Resources serem carregados.

1 resposta
solução!

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!