当前位置: 首页 > 面试题库 >

如何在同一Spring Boot应用程序中配置Neo4j和Cassandra存储库

姬弘文
2023-03-14
问题内容

我已经使用spring-data使用spring
boot分别配置了neo4j和cassandra存储库。但是,当我尝试在同一项目中使用两个存储库时,它无法按预期工作。

这是我的文件夹结构。

----- org.test.project

 -----controller
      BarController
      FooController
 -----models
      -----dao
           -----cassandra
                BarDAO
                FooDAO
           -----neo4j
                BarDAO
                FooDAO
 -----repositories
      -----cassandra
           BarRepository
           FooRepository
      -----neo
           BarRepository 
           FooRepository
 -----services
      CassandraService (Has cassandra repositories @Autowired)
      NeoService(Has neo repositories @Autowired)
 TestApp.java

请注意,所有存储库都通过相应的DAO扩展了相应的spring-datapository。

当我使用此配置运行时,会出现以下错误。

 Field airportRepository in org.test.project.TestApp required a bean of type 'org.test.project.repositories.cassandra.BarRepository' that could not be found.

我尝试更改存储库名称。然后它开始工作。

第一个问题是我们不能在不同的包裹中使用相同的名称并开始工作吗

尽管这次它开始工作,但在身份验证标头中却给出了错误。

 org.neo4j.ogm.drivers.http.request.HttpRequestException: http://localhost:7474/db/data/transaction/commit: No authentication header supplied.

我已经添加了ogm.properties,就像我仅使用neo4j存储库时所做的一样。但似乎它们不再适用。因此,我在application.properties中添加了以下内容。

 spring.data.neo4j.password=neo4j
 spring.data.neo4j.username=neo4j

第二个问题是,如何像配置neo4j一样配置neo4j? 我在ogm.properties中定义了以下内容。如何将其应用于neo4j配置?

 #Driver, required
 driver=org.neo4j.ogm.drivers.bolt.driver.BoltDriver

 #URI of the Neo4j database, required. If no port is specified, the          
 #default port 7687 is used. Otherwise, a port can be specified with   
 #bolt://neo4j:password@localhost:1234

 URI=bolt://neo4j:neo4j@localhost

 #Connection pool size (the maximum number of sessions per URL),    
 #optional, defaults to 50

 connection.pool.size=150

 #Encryption level (TLS), optional, defaults to REQUIRED. Valid  
 #values are NONE,REQUIRED

 encryption.level=NONE

通过上述更改,现在出现以下错误。

 org.neo4j.ogm.exception.MappingException: No identity field found for class: org.rozzie.processor.models.dao.cassandra.FlightDAO

请注意,cassandra模型会抛出neo4j.ogm异常。内幕发生了什么。 如何在上述一个项目中使用spring boot配置这两个数据库?


问题答案:

看起来Spring Boot自动配置无法同时处理多个Spring Data项目。

请参阅有关Spring Data Neo4j和Spring Data Cassandra的文档

特别是,您应该将SDN模块仅指向neo4j存储库

@EnableNeo4jRepositories(basePackages = "org.test.project.repositories.neo")

cassandra也一样。



 类似资料:
  • 我想启用cassandra cqlsession度量。当尝试注册cqlsession度量时,它提供可选的。springboot应用程序中的empty()。这里我使用的是cassandra datastax java驱动程序4.6。 这是我的代码: 正在引发IllegalArgumentException错误。 当参考卡桑德拉税务局的官方文件时(https://docs.datastax.com/e

  • 它不使用自定义工厂。并且已经有几个其他模块(对于其他特性来说是gradle模块)正在使用WorkManger而不使用Factory。现在,如果我更改这个配置并添加一个工厂,它可能会破坏其他几个地方的work manager设置。我是否可以只对模块中的WorkManager类使用工厂(或者只有一些WorkManager类应该通过工厂初始化,其他的使用默认配置)。有可能吗?希望我的问题清楚了。

  • 我试图连接到Cassandra从我的Spring Boot应用程序使用Spring Boot数据cassandra。我有两个疑问。 1)是否建议使用CassandraAutoConfiguration,即在application.properties中提供带有前缀(spring.data.cassandra.*)的所有Cassandra配置,以便我的应用程序为我创建一个集群,或者我需要手动创建集群

  • 我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em

  • 我正在按照本指南将MySql添加到一个已经存在的SpringBoot项目中,该项目的依赖关系管理是在Graddle上。就在我添加教程中使用的这三个类时,如下所示 main/java/net/code/model/users.java 我的类使用@SpringBoot main/java/net/code/app.java 但每当我运行该应用程序时,我总是收到下面的消息 我搜索了一些相关问题,比如S