[英]Spring Data JPA No qualifying bean of type … found for dependency
[英]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>
嘗試將ContentRepository
, Content
和Application
放在同一包中。 如果您需要其他軟件包,請使用以下注釋為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.