我是Springboot的新手,目前正在尝试重新创建来自Baeldung的示例,其中使用React作为前端()构建了一个简单的全栈项目。从我目前收集到的信息来看,当使用JpaRepository接口创建存储库时,Spring基本上会在后台创建一个类,然后我可以从JpaRepository调用这些方法。
然而,在我自己尝试之后,当我尝试启动我的春季启动应用程序时,我得到了这个错误:No qualifying bean of type 'com.example.repository.ClientRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
最后我使用了一个类实现来运行应用程序。这是我的pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.4.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.4.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.6</version>
</dependency>
我的存储库接口:
package com.example.repository;
import com.example.model.Client;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
public interface ClientRepository extends JpaRepository<Client, Long> {
}
控制器类:
@RestController
@RequestMapping("/clients")
@EnableJpaRepositories
@SpringBootApplication(scanBasePackages = {"com.example","com.example.repository"})
public class ClientsController {
private final ClientRepository clientRepository;
public ClientsController(ClientRepository clientRepository){
this.clientRepository = clientRepository;
}
*** Remaining API methods ***
我必须使用jparerepository的类实现来启动Springboot应用程序。我的问题是:我是否必须继续并完全实现我自己的数据访问层,因为默认的jparerepository似乎还不够?
您必须为SpringBoot添加@Repository
注释以创建Bean
您必须从ClientsController
@EnableJpaRepositories
@SpringBootApplication(scanBasePackages = {"com.example","com.example.repository"})
并确保将@SpringBootApplication
添加到应用程序的入口点。