Solucionado (ver solução)
Solucionado
(ver solução)
13
respostas

Problema com Autowired

Na aula 2 fiz tudo corretamente porem quando vamos fazer a injeção do repository da esse erro : Error creating bean with name 'convidadoController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private br.com.alura.listavip.repository.ConvidadoRepository br.com.alura.listavip.conf.ConvidadoController.repository; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.alura.listavip.repository.ConvidadoRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

aqui esta o codigo:

package br.com.alura.listavip.conf;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import br.com.alura.listavip.model.Convidado;
import br.com.alura.listavip.repository.ConvidadoRepository;

@Controller
public class ConvidadoController {

    @Autowired
    private ConvidadoRepository repository;

    @RequestMapping("/")
    public String index(){
        return "index";
    }

    @RequestMapping("listaconvidados")
    public String listaConvidados(Model model){
        Iterable<Convidado> convidados = repository.findAll();
        model.addAttribute("convidados", convidados);

        return "lista";
    }
}
package br.com.alura.listavip.conf;

import javax.sql.DataSource;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

@SpringBootApplication
public class Configuracao {
    public static void main(String[] args) {
        SpringApplication.run(Configuracao.class, args);

    }

    @Bean
    public DataSource dataSource(){
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/listavip");
        dataSource.setUsername("root");
        dataSource.setPassword("mysql");
        return dataSource;

    }

}
package br.com.alura.listavip.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Convidado {
    @Id
    @GeneratedValue
    private Integer id;

    private String nome;
    private String email;
    private String telefone;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
}
package br.com.alura.listavip.repository;

import org.springframework.data.repository.CrudRepository;

import br.com.alura.listavip.model.Convidado;



public interface ConvidadoRepository  extends CrudRepository<Convidado, Long>{

}
13 respostas

Olá,

Tente:

@Repository
public interface ConvidadoRepository  extends CrudRepository<Convidado, Long>{

}

Té mais,

Continua com o mesmo erro @repository nao funciona

Outra coisa:

Perceba que na sua interface, ConvidadoRepository, você coloca:

CrudRepository<Convidado, Long>

Mas sua entidade Convidado, está com:

Integer id;

Tente trocar para:

CrudRepository<Convidado, Integer>

Té mais,

Continua com o mesmo erro mesmo trocando Integer por Long

Olá,

Você testou com @Repository e com o Integer?

Sim testei e continua com o mesmo erro

Tente um teste:

Anote ConvidadoController com @Component ao invés de @Controller.

Tente um teste:

Anote ConvidadoController com @Component ao invés de @Controller.

Continua com o mesmo erro

Eita... Vi no StackOverFlow para remover da interface a anotação @Repository.

Mesmo removendo nao da em nada o erro continua

Seu pom, está assim:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.3.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>1.3.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>1.3.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.39</version>
        </dependency>


    </dependencies>

Sim esta dessa forma

solução!

Olá,

Baixei o projeto. E somente fiz algumas modificações no pom. Adicionei:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
    </parent>

E a versão eu subi para 1.5.2.RELEASE.

Té mais,

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software