5
respostas

Erro na Injeção de Dependência do Spring, ele está lançando bean exception

Olá tudo bem ?

Estou com o problema de Bean Exception

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'topicosController': Unsatisfied dependency expressed through field 'repository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'topicoRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: class br.com.alura.modelo.Topico

Cordialmente, Bruno Carvalho.

5 respostas

Oi Bruno,

Posta aqui o código do seu repository e da sua classe Topico também.

Verifique se os pacotes das classes estão corretos:

controller -> br.com.alura.forum.controller

repository -> br.com.alura.forum.repository

modelo -> br.com.alura.forum.model

Olá Rodrigo, tudo bem ?

Classe Repository

insira seu código aqui
package br.com.alura.forum.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import br.com.alura.model.Topico;

public interface TopicoRepository extends JpaRepository<Topico,Long> {

}

Classe Tópico package br.com.alura.model;

import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.OneToMany;

@Entity public class Topico {

@Id @GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
private String titulo;
private String mensagem;
private LocalDateTime dataCriacao = LocalDateTime.now();
@Enumerated(EnumType.STRING)
private StatusTopico status = StatusTopico.NAO_RESPONDIDO;
@ManyToOne    
private Usuario autor;
@ManyToOne
private Curso curso;
@OneToMany(mappedBy = "topico")
private List<Resposta> respostas = new ArrayList<>();

public Topico(String titulo, String mensagem, Curso curso) {
    this.titulo = titulo;
    this.mensagem = mensagem;
    this.curso = curso;
}

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Topico other = (Topico) obj;
    if (id == null) {
        if (other.id != null)
            return false;
    } else if (!id.equals(other.id))
        return false;
    return true;
}

public Long getId() {
    return id;
}

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

public String getTitulo() {
    return titulo;
}

public void setTitulo(String titulo) {
    this.titulo = titulo;
}

public String getMensagem() {
    return mensagem;
}

public void setMensagem(String mensagem) {
    this.mensagem = mensagem;
}

public LocalDateTime getDataCriacao() {
    return dataCriacao;
}

public void setDataCriacao(LocalDateTime dataCriacao) {
    this.dataCriacao = dataCriacao;
}

public StatusTopico getStatus() {
    return status;
}

public void setStatus(StatusTopico status) {
    this.status = status;
}

public Usuario getAutor() {
    return autor;
}

public void setAutor(Usuario autor) {
    this.autor = autor;
}

public Curso getCurso() {
    return curso;
}

public void setCurso(Curso curso) {
    this.curso = curso;
}

public List<Resposta> getRespostas() {
    return respostas;
}

public void setRespostas(List<Resposta> respostas) {
    this.respostas = respostas;
}

}

Segue o código acima.

Realizei todas as mudanças, mesmo assim não resolveu

Obrigado pela ajuda.

Cordialmente, Bruno Carvalho.

Consegue postar o código completo no github ou em algum outro local onde possamos baixar para analisar melhor o problema ?

Oi Bruno,

Acho que o problema é porque sua classe Topico está no pacote errado.

Ela está no pacote br.com.alura.model, mas o correto é: br.com.alura.forum.model.

Está faltando o .forum no pacote, e desse jeito o spring não vai conseguir enxergar/carregar a classe.

Obrigado Rodrigo.

Foi Solucionado o problema.

Cordialmente, Bruno Carvalho.