3
respostas

Começando com Spring

Fala instrutor beleza? Estou começando agora com o SpringMVC, entendo bem sobre outras tecnologia como JSF. Estou no primeiro capitulo do curso, e saiu completamente da minha area de conforto, tudo diferente kkk.

Não entendi muito bem as partes da configuração do nosso projeto.

Aqui estamos dizendo que o Spring irá "mapear" a partir do / com a anotação @RequestMapping("/") ?

package br.com.casadocodigo.loja.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HomeController {

    @RequestMapping("/")
    public String index() {
        System.out.println("Entrando na casadocodigo");
        return "home";
    }
}

Logo depois fazemos, aqui eu entendi perfeitamente.

package br.com.casadocodigo.loja.conf;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class ServletSpringMVC extends AbstractAnnotationConfigDispatcherServletInitializer{

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] {APPWebConfiguration.class};
    }

    @Override
    protected String[] getServletMappings() {
        String[] mapa = {"/"};
        return mapa;
    }

}

E aqui seria outra configuração, mais seria da parte do JSP, mas que o Spring irá configurar automaticamente com a anotação Bean. Seria isso?

package br.com.casadocodigo.loja.conf;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import br.com.casadocodigo.loja.controller.HomeController;

@EnableWebMvc
@ComponentScan(basePackageClasses = {HomeController.class})    
public class APPWebConfiguration {


    @Bean
    public InternalResourceViewResolver getInternalResourceViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setSuffix(".jsp");
        resolver.setPrefix("/WEB-INF/views/");
        return resolver;
    }

}

Estou um pouco perdido no começo, vi que temos muitas modificações de JSF para Spring, a principal dela foi ver que é no jsp que programamos o nosso form, mais apesar disso to ancioso para ver oque essa tecnologia pode nos trazer lkkk.

3 respostas

Olá Alisson, tudo bem?

Posso tentar te ajudar a compreender estas configurações do projeto.

Aqui estamos dizendo que o Spring irá "mapear" a partir do / com a anotação @RequestMapping("/") ? R: Classes anotadas com @Controller serão nossos controladores, elas são responsáveis em lidar com as requisições em nossa aplicação. Cada método dentro dessa classe fica responsável por responder uma determinada requisição, são nossas ações. Neste caso estamos dizendo que quando for realizada uma requisição para o caminho "/" vamos retornar a página de nome "home". Por padrão a anotação @RequestMapping atende o método HTTP GET, então para chegar neste método temos que realizar uma requisição usando GET para o caminho "/" da nossa aplicação.

O terceiro trecho de código é onde são realizadas as configurações do Spring MVC via Java (poderia ser feito através de XML). O método getInternalResourceViewResolver configura nossas Views, como a extensão e local onde elas serão armazenadas. Vale destacar que a anotação @ComponentScan diz para o Spring onde ele deve procurar seus beans (nosso controlador é um bean gerenciado pelo Spring).

Isso tudo é do padrão MVC, onde temos M (model), V (view) e C (controller), o código acima configura as views e também configura um controlador.

Espero ter ajudado!

Humberto correto, clareou um pouco mais sua explicação, uma outra duvida, no JSF usamos a biblioteca primefaces, que eram componentes customizados, como por exemplo, JSF tem seus proprios componentes, uma tabela por exemplo em JSF é só usar o < h:dataTable> aqui no Spring, é tudo html puro? < table> < td> < tr> Não tem nada que nos ajude nessa parte a desenvolver? :(((( kkk

Olá Alisson,

Realmente, no padrão MVC temos um desacoplamento maior na camada de visão. Isto traz algumas vantagens, como por exemplo, o time de UX/Designers pode trabalhar tranquilamente sem ter que aprender tags do JSF ou código Java para custoumizar nassas páginas. Uma outra coisa que notei é que a página tende a ficar mais leve.

Em contra partida temos que escrever mais código para atingir o nível de funcionalidade que estamos acontumados com os componentes do JSF.

Como você citou tabela, tenho duas sugestões:

DataTables - Você irá construir suas tabelas utilizando jQuery e JavaScript. Display tag library - Para os casos em que você está trabalhando com JSP na View.

Abraço, Humberto