簡體   English   中英

找不到 Spring 存儲庫 Bean

[英]Spring Repository Bean Not Being Found

我正在嘗試使用 spring 在 postgres 中做一個簡單的 CRUD,但無緣無故我的 IoD 機制不起作用並拋出這樣的錯誤:

Description:

Parameter 0 of constructor in br.com.maptriz.formulario_dinamico.service.FormularioDinamicoService required a bean of type 'br.com.maptriz.formulario_dinamico.repository.FormularioDinamicoRepository' that could not be found.


Action:

Consider defining a bean of type 'br.com.maptriz.formulario_dinamico.repository.FormularioDinamicoRepository' in your configuration.

這是我的代碼:

FormularioDinamicoApplication.java

package br.com.maptriz.formulario_dinamico;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

// @EnableJpaRepositories("br.com.maptriz.formulario_dinamico.repository")
// @EnableScheduling
// @EnableDiscoveryClient
// @ComponentScan
@SpringBootApplication
public class FormularioDinamicoApplication {

    public static void main(String[] args) {
        SpringApplication.run(FormularioDinamicoApplication.class, args);
    }
}

方程式賽車

package br.com.maptriz.formulario_dinamico.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "formulario_dinamico")
public class FormularioDinamico {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    @JoinColumn(name="tipo_tabela")
    private Long tabelaId;
    private String name;
    private String campos;

    protected FormularioDinamico() {}
    
    public FormularioDinamico(Long tabelaId, String name, String campos) {
        this.tabelaId = tabelaId;
        this.name = name;
        this.campos = campos;
    }

    public Long getId() {
        return id;
    }

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

    public Long getTabelaId() {
        return this.tabelaId;
    }

    public void setTabelaId(Long tabelaId) {
        this.tabelaId = tabelaId;
    } 

    public String getName() {
        return this.name;
    }

    public void setObservacao(String name) {
        this.name = name;
    }

    public String getCampos() {
        return this.campos;
    }

    public void setCampos(String campos) {
        this.campos = campos;
    }

    @Override
    public String toString() {
        return "EntidadeGenerica{" +
                "id=" + id +
                ", dataAtualizacao=" + tabelaId +
                ", dataCadastro=" + name +
                ", observacao='" + campos + '}';
    }
}

FormlarioDinamicoController.java

package br.com.maptriz.formulario_dinamico.controller;

import org.springframework.beans.factory.annotation.Autowired;
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 br.com.maptriz.formulario_dinamico.model.FormularioDinamico;
import br.com.maptriz.formulario_dinamico.service.FormularioDinamicoService;

@RestController
@RequestMapping
public class FormularioDinamicoController {
    private final FormularioDinamicoService service;

    @Autowired
    public FormularioDinamicoController(FormularioDinamicoService service) {
        this.service = service;
    }

    // @GetMapping
    // public List<DynamicForm> getDynamicForm() {
    //     return dynamicFormService.getDynamicForm();
    // }
    
    @PostMapping("/create")
    public void registrarNovoFormularioDinamico(@RequestBody FormularioDinamico formularioDinamico) {
        System.out.println("TEST");
        service.adicionarNovoFormularioDinamico(formularioDinamico);
    }
}

FormularioDinamicoService.java

package br.com.maptriz.formulario_dinamico.service;

import java.util.List;

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

import br.com.maptriz.formulario_dinamico.model.FormularioDinamico;
import br.com.maptriz.formulario_dinamico.repository.FormularioDinamicoRepository;

@Service
public class FormularioDinamicoService {
    
    private final FormularioDinamicoRepository repository;

    @Autowired
    public FormularioDinamicoService(FormularioDinamicoRepository repository) {
        this.repository = repository;
    }

    // public List<DynamicForm> getDynamicForm() {
    //  return dynamicFormRepository.findAll();
    // }

    public void adicionarNovoFormularioDinamico(FormularioDinamico formularioDinamico) {
        List<FormularioDinamico> topicos = repository.findAll();
        System.out.println("HEREEEE");
        System.out.println(topicos);
    }
}

最后是 FormularioDinamicoRepository.java

package br.com.maptriz.formulario_dinamico.repository;

import java.util.List;

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

import br.com.maptriz.formulario_dinamico.model.FormularioDinamico;



public interface FormularioDinamicoRepository
        extends JpaRepository<FormularioDinamico, Long> {

    List<FormularioDinamico> findAll();
}

我的文件夾結構:

  • 源文件
    • 主要的
      • java/br/com/maptriz/formulario_dinamico
        • 控制器
        • 模型
        • 存儲庫
        • 服務
        • FormularioDinamicoApplication.java

在接口FormularioDinamicoRepository上添加@Repository注釋。 它應該可以無縫地工作。

添加它的那一刻,spring 會將其識別為 bean 並創建一個對象並在任何自動裝配的地方注入 bean。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM