[英]Spring Boot JPA - No qualifying bean of type
我正在學習Spring,一切進展順利,但突然遇到無法找到合格bean的問題。 碰壁,即使在新應用中,我也能做到。
讓我知道是否需要更多,請稍候! 我一定會錯過一些非常簡單的東西。
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [com.alco.repository.ContactRepository]
found for dependency [com.alco.repository.ContactRepository]:
expected at least 1 bean which qualifies as autowire candidate for this dependency.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
我的依賴:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</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-hateoas</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
聯系人類別:
package com.example.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class Contact implements Serializable {
private static final long serialVersionUID = -1340978779095092824L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private String id;
private String firstName;
private String lastName;
private String address;
private String phoneNumber;
private String email;
}
簡單的界面:
package com.alco.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import com.alco.entity.Contact;
public interface ContactRepository extends JpaRepository<Contact, String> {
}
我認為您缺少啟用JPA存儲庫的功能:
@ComponentScan(basePackageClasses = ...)
@EntityScan(basePackageClasses = ...)
@EnableAutoConfiguration
@EnableJpaRepositories(basePackageClasses = ...)
public class ... {
}
這將用於您的配置類。
我唯一能看到的就是這個。 請嘗試通過存儲庫更改JpaRepository
import org.springframework.data.repository.Repository
public interface ContactRepository extends Repository<Contact, String> {
您需要使用@Repository
注釋存儲庫,否則Spring將不會管理您的Repository類。
不要使用更通用的@Component
,因為它可能導致不同的行為,例如在異常管理中。 作為示例,請查看Spring文檔的這一部分 。
摘抄:
后處理器自動查找所有異常轉換器(PersistenceExceptionTranslator接口的實現),並建議所有標有@Repository批注的bean,以便發現的轉換器可以攔截適當的轉換並將其應用於引發的異常。
此外,如提到這里 ,今后你可能有向后兼容性的問題。
或者,您可以使用@EnableJpaRepositories並指定Spring應該在哪里尋找存儲庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.