编程语言
首页 > 编程语言> > java-如何在同一spring boot应用程序中配置neo4j和cassandra存储库

java-如何在同一spring boot应用程序中配置neo4j和cassandra存储库

作者:互联网

我已经使用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 Neo4jSpring Data Cassandra的文档

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

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

cassandra也一样.

标签:java,spring,spring-boot,spring-data-neo4j,spring-data-cassandra
来源: https://codeday.me/bug/20191013/1905938.html