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 Neo4j和Spring 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