我正在关注此链接以使用弹簧数据实现 R2DBC。该项目具有巨大的 POM,因为它还演示了其他功能。因此,我尝试仅使用 Spring Boot 和带有 H2 的 R2DBC 所需的依赖项。
我的pom是:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--For testing-->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.199</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- junit 5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<!--For reactive-->
<dependency>
<groupId>io.r2dbc</groupId>
<artifactId>r2dbc-h2</artifactId>
<version>0.8.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-r2dbc</artifactId>
<version>1.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
</dependency>
<!---->
<dependencies>
然后我将存储库定义为:
public interface ReactiveFeatureRepository extends ReactiveCrudRepository<Feature, UUID> {
}
特征是实体类。
我在 src/test/resources 的 application.properties 中配置了 h2:
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=sa
在测试中:
@ExtendWith(SpringExtension.class)
@SpringBootTest
public class ReactiveFeatureRepositoryTest {
@Autowired
ReactiveFeatureRepository rfr;
@Autowired
DatabaseClient client;
@Autowired
H2ConnectionFactory factory;
...
...
}
但是当我尝试运行测试时,我会得到巨大的日志,其中列出了“正匹配”和“负匹配”,最后:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name
'x.y.z.ReactiveFeatureRepositoryTest': Unsatisfied dependency expressed
through field 'rfr'; nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type
'x.y.z.ReactiveFeatureRepository' available: expected at least 1 bean which
qualifies as autowire candidate. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true)}
at
与示例项目相比,我缺少什么?