Boa noite, Dirley!
Infelizmente, quando lidamos com outras ferramentas/bibliotecas, nem tudo vai fazer sentido ou vai ser super claro pra gente. Algumas coisas vamos ter que simplesmente aceitar que é assim que a ferramenta quis que fosse.
Sem a ajuda de um curso ou um post ou um video-tutorial ensinando, temos que olhar na documentação da ferramenta ou procurar no google mesmo para ver como fazer pra configurar tal pedaço da ferramenta.
No exemplo que você deu, realmente não ficou muito claro separar a configuração assim no meio.O que aconteceu foi que foi configurado parte do MultipartResolver
, testado e continuou dando erro (o erro NullPointerException
é bem genérico, mas vendo a linha em que ele ocorreu, dá pra ver que é porque a variável sumario
, do tipo MultipartFile
, tá nula). Como o MultipartFile
não foi gerado, uma das possibilidades é o MultipartResolver
ainda não estar fazendo o seu papel corretamente e precisar se melhor configurado.Mas, pra saber que precisava configurar o MultipartResolver
, dava pra ser na base da tentativa e erro, como o instrutor fez: ele primeiro tentou ter um MultipartFile
, mas o Spring devolveu um erro perguntando se o MultipartResolver
estava configurado.
No dia a dia, olhando a documentação da ferramenta sobre aquela necessidade específica, achamos as configurações, às vezes espalhadas pela documentação. Em posts sobre o assunto, muitas vezes já tem toda a configuração que precisa ser feita de uma vez.
Nesse caso, por exemplo, eu procuraria por "como configurar um MultipartResolver
no Spring MVC" e acharia a documentação da interface MultipartResolver.No início da documentação ele fala que é preciso definir uma implementação, criando um bean
com o id multipartResolver em algum local que seja um contexto de DispatcherServlet
na aplicação. Isso foi feito na primeira parte da configuração no curso, ao escrevermos o código:
@Bean
public MultipartResolver multipartResolver(){
return new StandardServletMultipartResolver();
}
Ps: para saber como criar um bean com um nome (id) específico, teria que procurar na documentação do Spring específica sobre criar beans.
Para definir uma implementação para a interface MultipartResolver
, a sua documentação sugere duas: CommonsMultipartResolver
e StandardServletMultipartResolver
, com link para cada uma. Aí, clicando no link da implementação escolhida, tem outras configurações que podem ter que serem feitas ou não. Olhando a documentação da classe StandardServletMultipartResolver
, a implementação escolhida no curso, dá pra ver no box que precisa implementar esse método customizeRegistration()
, que recebe um parâmetro do tipo Dynamic
. A documentação não explica porque sempre tem que ter esse método. Só diz que precisa criar pra poder usar essa implementação do MultipartResolver
.
No fim das contas é isso. Precisamos adaptar nosso código ao que a documentação pedir. Às vezes ela é boa e explica bem e tudo em um lugar só (tem vezes que fala também o motivo de precisar de cada configuração!), às vezes ela explica tudo, mas em locais separados e temos que ficar procurando na documentação, às vezes a documentação é ruim mesmo e temos que procurar por posts ou videos tutoriais.