簡體   English   中英

Spring Data JPA-未找到符合條件的Bean

[英]Spring data JPA - No qualifying bean found for dependency

我將使用spring data jpa進行簡單測試。

我有一個簡單的pojo ,一個接口和一個runner應用程序。

這是我的代碼:

package aa.bb.cc.repository;

@Repository
public interface ContentRepository extends CrudRepository<Content, Long>{
}

而且,我有一個簡單的POJO

@Entity
@Table(name = "content")
public class Content {

public Content(String name, String title, String description) {
    this.name = name;
    this.title = title;
    this.description = description;
}

@NotNull
private String name;

@NotNull
private String title;

@NotNull
private String description;
...
}

並且, Application類:

package aa.bb.cc.repository;

@SpringBootApplication
public class Application {

    private static final Logger log = LoggerFactory.getLogger(Application.class);

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

    @Bean
    public CommandLineRunner demo(ContentRepository repository) {
        return (args) -> {
            // save two contents
            repository.save(new Content("name1", "title1", "description1"));

            // fetch all Contents
            log.info("Contents found with findAll():");

            for (Content eachContent : repository.findAll()) {
                log.info(eachContent.toString());
            }
            log.info("");
        };
    }
}

我的pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.185</version>
</dependency>

我得到這個例外:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [aa.bb.cc.repository.ContentRepository] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}

我看到了一些相關問題,但無法解決此問題。 解決辦法是什么?

更新

spring-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/data/jpa
       http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

    <jpa:repositories base-package="aa.bb.cc.repository"/>

    <context:annotation-config/>

</beans>

嘗試將ContentRepositoryContentApplication放在同一包中。 如果您需要其他軟件包,請使用以下注釋為Application程序添加注釋:

@EnableJpaRepositories("repository.package")
@EntityScan("entities.package")
@ComponentScan("other.components.package")

根據specializt答案,您可以添加@Repository批注:

package aa.bb.cc.repository;

@Repository
public interface ContentRepository extends CrudRepository<Content, Long>{
}

好了,您的示例可以在沒有xml配置的環境中使用。 我必須修復的兩件事是:

  • 添加無參數構造函數
  • 添加帶有@Id注釋的標識符字段( @Id private Long id = 5l;

如果您仍然對此有疑問,可以將其上傳到我的github存儲庫中,並在此處發布鏈接。

我建議閱讀官方文檔 ,您需要在spring配置中激活存儲庫軟件包,如下所示:

<repositories base-package="aa.bb.cc.repository" />

暫無
暫無

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

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