Я пытаюсь связать свой собственный Spring Context для целей тестирования, используя автоматически сконфигурированную базу данных H2. Когда я пытаюсь заставить Spring Data создать собственную реализацию хранилища, с помощью приведенного ниже кода я получаю:
No qualifying bean of type 'com.project.NodesRepository' available: expected at least 1 bean which qualifies
Как я могу использовать свой собственный пользовательский контекст, работающий во встроенном Tomcat с автоконфигурированной базой данных?
@SpringBootTest(classes = NodeConfiguration.class)
class NodeManagementAcceptanceSpec extends IntegrationSpecification {
@Autowired
private NodesRepository nodesRepository;
def "one plus one should equal two"() {
expect:
1 + 1 == 2
System.out.println("nodeRepository has been initialized!")
}
}
Конфигурация узла:
@Configuration
@Import(MariaDBConfiguration.class)
class NodeConfiguration {
@Bean
public NodeController nodeController(NodeApplicationService nodeApplicationService) {
return new NodeController(nodeApplicationService);
}
@Bean
public NodeApplicationService nodeApplicationService(NodeDomainService nodeDomainService, PatrolSourceViewDomainService patrolSourceViewDomainService,
NodeMapper nodeMapper, PatrolMapper patrolMapper, SourceMapper sourceMapper) {
return new DefaultNodeApplicationService(nodeDomainService, patrolSourceViewDomainService, nodeMapper, patrolMapper, sourceMapper);
}
@Bean
public NodeDomainService nodeDomainService(NodesRepository nodesRepository) {
return new NodeDomainService(nodesRepository);
}
@Bean
public PatrolSourceViewDomainService patrolSourceViewDomainService(PatrolSourceViewRepository patrolSourceViewRepository,
PatrolRepository patrolRepository,
SourcesRepository sourcesRepository,
ViewRepository viewRepository) {
return new PatrolSourceViewDomainService(patrolSourceViewRepository, patrolRepository, sourcesRepository, viewRepository);
}
}
Конфигурация MariaDB:
@EnableJpaRepositories
@Configuration
public class MariaDBConfiguration {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.driver-class-name}")
private String driver;
@Bean
public DataSource dataSource() {
return DataSourceBuilder.create()
.url(url)
.username(username)
.password(password)
.driverClassName(driver)
.build();
}
}