[英]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.