5
respostas

Padrão de codificação do curso SpringBoot ou SpringMVC ?

Pessoal, atualmente estou criando um projeto para utilizar o que aprendi nos cursos de Spring MVC I e SpringBoot. Mas tenho três dúvidas, a primeira é, no curso de SpringBoot é utilzado um padrão para os métodos, e no curso de SpringMVC é utilizado ModelAndView, qual eu devo usar ?

A segunda, é como devo deixar o documento application.properties para que faça a criação das tabelas para mim ?

A terceira dúvida é que estou recebendo o seguinte erro:

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017-05-19 18:30:08.166 ERROR 3636 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field produtoService in br.com.playthegame.PlayTheGame.CadastroProdutoController required a bean of type 'br.com.playthegame.dao.ProdutoService' that could not be found.


Action:

Consider defining a bean of type 'br.com.playthegame.dao.ProdutoService' in your configuration.

Classes:

package br.com.playthegame.PlayTheGame;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import br.com.playthegame.Model.Produto;
import br.com.playthegame.dao.ProdutoService;

@Controller
public class CadastroProdutoController {

    @Autowired
    ProdutoService produtoService;



    @RequestMapping("/cadastro_produto") // o que aparece no navegador
    public ModelAndView cadastro() {
        return new ModelAndView("CadastroProduto"); // nome do arquivo
    }

    @RequestMapping(value = "salvar", method = RequestMethod.POST)
    public ModelAndView grava(Produto produto) {
        produtoService.salvar(produto);
        return new ModelAndView("redirect:CadastroProduto");
    }

}
package br.com.playthegame.Repository;

import org.springframework.data.repository.CrudRepository;

import br.com.playthegame.Model.Pedido;

public interface PedidoRepository extends CrudRepository<Pedido, Long>{

}
package br.com.playthegame.dao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.com.playthegame.Model.Produto;
import br.com.playthegame.Repository.ProdutoRepository;

@Service
public class ProdutoService {

    @Autowired
    ProdutoRepository produtoRepository;

    public void salvar(Produto produto){

        produtoRepository.save(produto);

    }

}
5 respostas

Bom dia,

Você copiou o codigo certo? Pois colocou a interface:

public interface PedidoRepository extends CrudRepository<Pedido, Long>{

mas o service esta em ProdutoService

Obrigado pela ajuda, consegui solucionar, o problema estava nos nomes do pacote. O pacote principal onde ficava o Main estava com um nome um pouco diferente dos demais pacotes, então o Spring não conseguia escanear.

Mas ainda fica a dúvida se utilizo ou não o ModelAndView, e a application.properties.

Boa noite, como eu ainda estou estudando as aulas da carreira, não tive tempo de pesquisar sobre. Eu utilizei o ModelAndView e funcionou, mas quebrou o css do bootstrap. Eu não entendi o porque.

Como eu acostumei com o ModelAndView eu estou inclinado a usar, assim que descobrir o porque do problema.

O application.properties eu deixo um metodo na classe de configuração, pois vira e mexe quando vou subir o projeto ele pede o dialect do hibernate.

Se alguem souber sanar essas duvidas eu também ficaria grato.

Rodrigo, tive um problema com o CSS no SpringBoot também, ao utilizar o Spring Security, algo que li em algum forum, se me recordo, existem configurações necessárias para utilização do mesmo para que o CSS funcione corretamente.

Outro motivo de ter quebrado também o CSS foi por ter definido como:

<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" />

ao invés de:

<link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet" />

Em relação ao ModelAndView, ainda estou confuso também, quando usar e não usar.

Bom dia Rafael, Obrigado pela info, vou pesquisar sobre :)