Java ';字段需要找不到类型为的bean;弹簧罐';找不到我的存储库界面

Java ';字段需要找不到类型为的bean;弹簧罐';找不到我的存储库界面,java,spring,spring-boot,spring-data-jpa,javabeans,Java,Spring,Spring Boot,Spring Data Jpa,Javabeans,我正在尝试启动并运行我的skeleton Spring webapp,以便开始测试POST请求等。但是,构建器引发了一个异常: 说明: 中的字段存储库 com.internal.signing.model.SigningOrder.SigningOrder需要一个bean 类型 'com.internal.signing.model.SigningOrder.SigningOrder repository'表示 找不到 行动: 考虑定义类型为的bean 中的“com.internal.signi

我正在尝试启动并运行我的skeleton Spring webapp,以便开始测试POST请求等。但是,构建器引发了一个异常:

说明:

中的字段存储库 com.internal.signing.model.SigningOrder.SigningOrder需要一个bean 类型 'com.internal.signing.model.SigningOrder.SigningOrder repository'表示 找不到

行动:

考虑定义类型为的bean 中的“com.internal.signing.model.SigningOrder.SigningOrderRepository” 您的配置

我确实有一个类
com.internal.signing.model.SigningOrder.signingordereposition
。我应该在什么上下文中定义这个bean?我的项目结构定义如下。有一个类似的问题,但答案不适用于我的情况(我想是这样)

我的
登录rdercontroller.java

package com.internal.signing.controller;

import com.internal.signing.model.SigningOrder.SigningOrder;
import com.internal.signing.model.SigningOrder.SigningOrderRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SigningOrderController {

    @Autowired
    private SigningOrderRepository repo;

    @PostMapping("/send")
    @ResponseBody
    public String foo()
    {
        Iterable<SigningOrder> orders = repo.findAll();
        return orders.toString();
    }
}
package com.internal.signing.model.SigningOrder;

import com.internal.signing.model.Notification;
import com.internal.signing.model.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import java.io.Serializable;
import java.util.List;

@Component
@Entity
public class SigningOrder implements Serializable {

    @Autowired
    private SigningOrderRepository repository;

    @GeneratedValue
    private int id;

    private List<Subject> listOfSubjects;
.
    private List<String> authenticationMethods;

    private List<String> signingMethods;

    private List<Notification> listofNotifications;

    //Getters and setters
}
package com.internal.signing.model.SigningOrder;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Service;

@Service //This was a tip in an answer with many upvotes in the linked questions. I have tried with
// "@Repository" annotation as well, but to no avail.
public interface SigningOrderRepository extends CrudRepository<SigningOrder, Integer> {

}
package com.internal.signing;

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

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        System.out.println("In application");
    }
}
My
SigningOrderRepository.java

package com.internal.signing.controller;

import com.internal.signing.model.SigningOrder.SigningOrder;
import com.internal.signing.model.SigningOrder.SigningOrderRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SigningOrderController {

    @Autowired
    private SigningOrderRepository repo;

    @PostMapping("/send")
    @ResponseBody
    public String foo()
    {
        Iterable<SigningOrder> orders = repo.findAll();
        return orders.toString();
    }
}
package com.internal.signing.model.SigningOrder;

import com.internal.signing.model.Notification;
import com.internal.signing.model.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import java.io.Serializable;
import java.util.List;

@Component
@Entity
public class SigningOrder implements Serializable {

    @Autowired
    private SigningOrderRepository repository;

    @GeneratedValue
    private int id;

    private List<Subject> listOfSubjects;
.
    private List<String> authenticationMethods;

    private List<String> signingMethods;

    private List<Notification> listofNotifications;

    //Getters and setters
}
package com.internal.signing.model.SigningOrder;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Service;

@Service //This was a tip in an answer with many upvotes in the linked questions. I have tried with
// "@Repository" annotation as well, but to no avail.
public interface SigningOrderRepository extends CrudRepository<SigningOrder, Integer> {

}
package com.internal.signing;

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

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        System.out.println("In application");
    }
}
更改:

@Component
@Entity
public class SigningOrder implements Serializable {

    @Autowired
    private SigningOrderRepository repository;

    @GeneratedValue
    private int id;

    private List<Subject> listOfSubjects;

    private List<String> authenticationMethods;

    private List<String> signingMethods;

    private List<Notification> listofNotifications;

        //Getters and setters
    }

不要把豆子注入你的实体@KernelPanic先生,你能详细解释一下吗?请阅读我的答案。这并没有解决错误,但还是谢谢你。我应该将bean与实体分开有什么特别的原因吗?我扩展了代码示例。请再复习一遍。