无法将我的 CurdRepository 接口导入到我的控制器

问题描述 投票:0回答:1

我正在学习Java spring boot并编写了一个基本的REST API。到目前为止一切都有效。由于我使用的是 VPN,该应用程序不再工作。我收到以下错误消息:

Description:

Parameter 0 of constructor in com.example.demo.Registration required a bean of type 'com.example.demo.IUserRepository' that could not be found.


Action:

Consider defining a bean of type 'com.example.demo.IUserRepository' in your configuration.

这不可能是由于 VPN 造成的。但我不知道还可能是什么,因为在我看来一切都很好。这是程序,除了 POM 之外,所有文件都在一个包中

班级用户:

package com.example.demo;

import java.util.UUID;

import org.springframework.data.annotation.Id;

import jakarta.persistence.Entity;

@Entity
public class User {
    @Id
    private String id;
    private String prename;
    private String lastname;
    private String password;
    private String email;
    private int age;
    
    public User() { }
    
    public User(String prename, String lastname, int age, String password, String email) {
        this.id = UUID.randomUUID().toString();
        this.prename = prename;
        this.lastname = lastname;
        this.password = password;
        this.email = email;
        this.age = age;
    }
    
    //getter
    public String getID() {return id;}
    public String getPrename() { return prename;}
    public String getLastname() {return lastname;}
    public int getAge() {return age;}
    public String getEmail() {return email;}
    public String getPassword() {return password;}
    
    //setter
    public void setID(String id) {this.id = id;}
    public void setPrename(String prename) {this.prename = prename;}
    public void setLastname(String lastname) {this.lastname = lastname;}
    public void setAge(int age) {this.age = age;}
    public void setEmail(String email) {this.email = email;}
    public void setPassword(String password) {this.password = password;}
}

接口IUserRepository:

package com.example.demo;

import org.springframework.data.repository.CrudRepository;

public interface IUserRepository extends CrudRepository<User, String>
{

}

班级注册(简称控制器)

package com.example.demo;

import java.util.Map;
import java.util.Optional;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

//import denniscompany.websitemodels.*;
//import denniscompany.websiterepositories.*;

@RestController
public class Registration {
    
    private IUserRepository userRepository;

    public Registration(IUserRepository p_oUserRepository ) {
        userRepository = p_oUserRepository;
        userRepository.save(new User("Test", "User", 28, "[email protected]", "1234"));
        
    }

    @GetMapping("/")
    public Iterable<User> getUsers() { return userRepository.findAll(); }
    

还有我的 POM.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
    <dependency>
        <groupId>jakarta.persistence</groupId>
        <artifactId>jakarta.persistence-api</artifactId>
        <version>3.2.0-B01</version>
    </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>2.2.224</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

在 Eclipse 中,我没有收到无法编译的错误消息。所以希望有人能帮助我。

我已在此链接上尝试过这些解决方案Can't Autowire @Repository 注解的接口在 Spring Boot 中

但它不起作用。我尝试

Autowire
我的存储库并将注释设置为我的界面
Repository
。另外,我将注释设置为我的主要注释
EnableJpaRepositories
。但它给了我同样的错误。所有文件都在一个包中,所以我不需要 scanComponent 或 scanEntity 等。我的链接的解决方案已有 9 年历史,可能已经过时了。

我在 Eclipse 中遇到错误以及导入我的接口的解决方案。但是当我点击它时什么也没有发生。可能是因为我无法导入它,因为它位于同一个包中。所以我在一个包中有多个文件,但它们看不到彼此。

java spring-boot eclipse rest import
1个回答
0
投票

我想我已经有了答案。当我导入

CrudRepository
时,库将
CrudRepository
注释为
@norepositrorybean
。因此,CrudRepository 不是一个 bean。

这同样适用于 JpaRepository。请参阅链接 jpaRepository

© www.soinside.com 2019 - 2024. All rights reserved.