Hoje vamos aprender a configurar um projeto Spring MVC utilizando apenas anotações e classes Java, nesse projeto vamos utilizar a versão 4.X.X do Spring, utilizaremos o Maven para resolução de dependências,Tomcat como container para rodar nosso projeto e o Eclipse( estou utilizando a versão Luna ) como IDE.
Vamo começar criando o projeto Maven, utilize o atalho "Alt + Shift + N" e selecione Maven Project, ou selecione no menu File > New > Maven Project. Agora na janela de criação do projeto selecione a opção "Create a simple project ( skip archetype selection ) e clique em "Next". Para o Group Id teremos o valor "me.efraimgentil", para Artifact Id o valor "spring-annotation-example", no Packaging vamos selecionar "War" e clicar em "Finish"
Com o projeto criado, vamos colocar as dependências necessárias para configurar e rodar o projeto com Spring MVC, veja as dependências necessárias a seguir:
Com essas dependências já podemos iniciar nossa configuração do Spring MVC, para iniciar vamos criar a classe SpringCofing no pacote "me.efraimgentil.springannotationexample.config", como a seguir:
A classe vai ficar vazia, estamos apenas sinalizando para o Spring que pacotes queremos que ele escaneie para identificar seus componentes
A próxima classe que vamos criar é a SpringMvcConfig, selecione o mesmo pacote da classe anterior, como a seguir:
A anotação @EnableWebMvc habilita as configurações padrão do Spring MVC, e registra os componentes básicos necessários. Note o @Bean que estamos registrando InternalResourceViewResolver, precisamos dele para que o Spring MVC encontre nossas páginas JSP no caminho que especificamos, no caso "/WEB-INF/views/", então não se esqueça de criar a pasta "views" dentro do seus diretório "WEB-INF", para esse objeto também especificamos o sufixo dos arquivos que serão considerados como views
Agora precisamos criar o nosso inicializador, basicamente ele funciona como nosso arquivo web.xml, veja a seguir como fica a classe WebInitializer
Nossa classe WebInitializer extende a classe AbstractAnnotationConfigDispatcherServletInitializer do Spring, e me obriga a implementar 3 metodos, o primeiro "getRootConfigClasses" estou retornando as classes que possuem minha configuração do Spring por anotação, no segundo metodo especifico as classes de configuração que fazem alterações no ServletContext, no caso a classe SpringMvcConfig faz alterações e cofigurações do dispatcher padrão do Spring. E o último método "getServletMappings" especifica o caminho do meu Servlet padrão, no caso vamos usar o raiz "/", para que toda requisição passe pelo meu Dispatcher do Spring MVC
Note que vocẽ pode ver configurações que retorna null no método "getServletConfigClasses", e todas as classes de configuração no método "getRootConfigClasses", essa forma também funciona sem problema ( faça o teste =D )
Com isso temos nossa configuração do Spring MVC somente com anotações pronta, para testarmos vamos criar um Controller simples no pacote "me.efraimgentil.springannotationexample.controller" como a seguir:
Esse controller cria uma rota na raiz da aplicação, então esse método será chamado quando fizermos um request para o endereço "http://localhost:8080/spring-annotation-example/", esse endereço pode variar dependendo da configuração do seu Tomcat. O método "hello" retorna a String "hello", como fizemos a configuração do InternalResourceViewResolver, o Spring vai buscar uma arquivo de nome "hello.jsp" na pasta que configuramos para o resolver, então dentro da pasta "WEB-INF/views/" crie o arquivo "hello.jsp", como a seguir por exemplo:
Agora basta rodar seu projeto no Tomcat e acessar o endereço para ver o resultado
Essa é apenas uma configuração basica do Spring com Anotações, vocẽ pode acessar os fontes do projeto no endereço: https://github.com/efraimgentil/spring-annotation-example