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

Error creating bean with name 'topicosController'

O Spring não roda, já verifiquei a questão dos pacotes e está tudo ok. A mensagem que aparece é a seguinte: Error creating bean with name 'topicosController': Unsatisfied dependency expressed through field 'topicoRepository'. Se alguém puder me ajudar agradeço : )

11 respostas

Ao que tudo indica o Spring não está conseguindo encontrar um objeto do tipo TopicoRepository que ele possa injetar no seu Controller.

Posta o código do seu TopicosController, da interface TopicoRepository e uma imagem da estrutura de pacotes do projeto.

TopicosController

package br.com.projeto.forum.controller;

import java.net.URI; import java.util.List;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.util.UriComponentsBuilder;

import br.com.projeto.forum.controller.form.TopicoForm; import br.com.projeto.forum.dto.TopicoDto; import br.com.projeto.forum.model.Topico; import br.com.projeto.forum.repository.CursoRepository; import br.com.projeto.forum.repository.TopicoRepository;

@RestController @RequestMapping("/topicos") public class TopicosController {

@Autowired
private TopicoRepository topicoRepository;

@Autowired
private CursoRepository cursoRepository;

    @GetMapping
    public List<TopicoDto>lista(String nomeCurso){
    if (nomeCurso == null) {
        List<Topico> topicos = topicoRepository.findAll();     
        return TopicoDto.converter(topicos);

    } else {
        List<Topico> topicos = topicoRepository.findByCursoNome(nomeCurso);     
        return TopicoDto.converter(topicos);
    }


}
    @PostMapping
public ResponseEntity<TopicoDto> cadastrar(@RequestBody TopicoForm form, UriComponentsBuilder uriBuilder) {
        Topico topico = form.converter(cursoRepository);
        topicoRepository.save(topico);

        URI uri = uriBuilder.path("/topicos/{id}").buildAndExpand(topico.getId()).toUri();
        return ResponseEntity.created(uri).body(new TopicoDto(topico));

}

}

interface TopicoRepository

package br.com.projeto.forum.repository;

import java.util.List;

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

import br.com.projeto.forum.model.Topico;

public interface TopicoRepository extends JpaRepository<Topico, Long> {

List<Topico> findByCursoNome(String nomeCurso);

}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Até aqui tudo parece certo, como está sua classe ForumApplication?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Esse caso é bastante curioso, caso ainda não tenha conseguido, suba o projeto no github ou no google driver que tento verificar melhor.

Oi Kerolen,

O código aparenta estar certinho mesmo.

Parece ser algum problema de compilação/atualização das classes no projeto. Verifica no meu superior do Eclipse Project se a opção Build automatically está marcada.

Já aproveita e nesse mesmo menu project clica na opção Clean... e executa o clean do projeto.

Depois disso clica com o botão direito no seu projeto e vai na opção: Maven -> Update Project... e executa o update do projeto.

Veja se com isso resolve o problema.

Esse erro eu consegui resolver. Era injeção de dependencia. Mas agora estou com outro meu banco de dados está subindo zerado mas tenho dados nele. Vou compartilhar com vc ele pelo drive. https://drive.google.com/drive/folders/1GAGStd_iJ1Ety3VnOjuI6Aj5Mvenej8d?usp=sharing

solução!

Oi Kerolen,

O arquivo data.sql deve ficar dentro da pasta src/main/resources.

E nas versoes novas do Spring Boot precisa adicionar essa propriedade no application.properties para o insert desses registros funcionar:

spring.jpa.defer-datasource-initialization=true

O arquivo Sql esta na pasta certinho, inclui essa propriedade mas mesmo assim não está subindo os dados.

eu vi que o seu arquivo esta dentro da pasta templates

Muito obrigada. Agora está rodando certinho : )