当前位置: 首页 > 知识库问答 >
问题:

Spring@Autowired无法连接Jpa存储库

冀望
2023-03-14

我显然遗漏了一些东西。我正在制作一个简单的spring boot应用程序,其中包含spring数据jpa并面临以下错误:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [locassa.domain.repository.PersonRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    ... 32 common frames omitted

我的代码:

应用程序:

@SpringBootApplication
@ComponentScan(basePackages = {"app.controller", "app.domain"})
public class Application {

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

}

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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>pl.mosek</groupId>
    <artifactId>pl.mosek</artifactId>
    <version>0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.0.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.6</version>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

</project>

控制器:

@RestController
public class TestController {

    @Autowired
    PersonService personService;

    @RequestMapping("/")
    public String index() {
        return "Test spring boot";
    }

    @RequestMapping("/person/{id}")
    public Person personById(@PathVariable Long id) {
        return personService.findPerson(id);
    }
}

人事服务:

public interface PersonService {

    Person findPerson(Long id);
}

个人服务:

@Service
public class PersonServiceImpl implements PersonService {

    @Autowired
    PersonRepository personRepository;

    public Person findPerson(Long id) {
       return personRepository.findOne(id);
    }
}

PersonRepository(此存储库不能自动连接):

public interface PersonRepository extends CrudRepository<Person, Long> {
}

已经在网上搜索了。我什么都没找到。有什么想法吗?

共有1个答案

卜和悌
2023-03-14

我也有同样的问题。我用下面的解决方法解决了它。如果您的实体类和存储库位于不同的包中,则需要使用以下注释。

@SpringBootApplication
@EntityScan(basePackages = {"EntityPackage"} )
@EnableJpaRepositories(basePackages = {"RepositoryPackage"})
public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class, args);

    }
}
 类似资料:
  • 我在Spring Boot上还是新手,我在mongoDB数据库中使用Spring-Boot添加了一个名为文章的文档,我想在该文章中添加注释。但是Spring-boot不能在我的应用程序中自动连接我的存储库。 下面是我的Repository类,它实现了ArticleRepositoryCustom接口,该接口包含一个OuterComment方法。 文章库 这是我的Springboot应用程序课程 当

  • 问题内容: 我正在尝试在github仓库上连接詹金斯。 当我指定Repo URL jenkins时,返回以下错误消息: 无法连接到存储库:命令“ git ls-remote -h git@github.com:adolfosrs / jenkins-test.git HEAD”返回状态码128:stdout:stderr:主机密钥验证失败。致命:无法从远程存储库读取。请确保您具有正确的访问权限,并

  • 我最近开始学习Java,以及Spring5和SpringBoot。我对创建web服务相对较新,所以首先我要创建一个在线宠物商店API。我一直遵循这个github教程中的源代码作为指南:https://github.com/in28minutes/spring-boot-examples/tree/master/spring-boot-2-rest-service-with-swagger 要部署A

  • 我试图覆盖我的整个测试环境与Mockito.spy功能,所以每当我想我可以存根一个方法,但所有其他调用去默认功能。这在服务层运行得很好,但是我在存储库层有问题。 我的设置如下: Mockito-2.15.0 Spring-5.0.8 SpringBoot-2.0.4 存储库: 服务: spy的配置: 还有我的测试课: 现在,该测试有三种可能的结果: > aRepository是间谍(这就是我想要的

  • 我已经安装了EclipseIDEforJ2EE,现在我正在尝试安装WTP。我在这里和其他地方都试过了。。 没有代理问题,因为我可以通过内部网络浏览器打开存储库网站。 我尝试添加"-Djava.net.preferIPv4Stack=true"到eclipse.ini. 我尝试过清除缓存,一个不同的工作区。。。顺便说一下,我是个十足的新手。以防万一我错过了一些明显的东西。 无法连接到存储库http:

  • 我刚接触spring cloud我的目标是将本地git repo(windows machine-->创建于文件夹z://spring_boot_cloud_microservices_udemy/projects/local-git-repo/)连接到spring cloud Server,但是当我输入相应的url(http://localhost:8888/limit-services/def