概述
在做应用级项目开发时,有时需要同时从一个应用程序中连接到不同的数据源。在做Neo4J相关开发时也会有这样的需求,本文将介绍,如何在Spring Boot项目中使用 SDN配置连接多个Neo4j数据库实例
问题
我想在Spring Boot应用程序中通过不同的Neo4j-OGM会话工厂使用不同的Neo4j实例。 我有几个域,每个域都有自己的实体类和存储库,每个域都有自己的Neo4j实例。 我添加了Spring Boot Starter Data Neo4j,但它只允许一个连接,我的所有存储库都使用它。
解决方案
为此,你需要Spring Boot 2.x和Spring Data的最新版本,它被称为Spring Data Lovelace(RC1)。 在start.spring.io生成的标准Spring Boot 2应用程序中,您将使用以下属性更改Spring Data Release系列: pom.xml
<properties>
<spring-data-releasetrain.version>Lovelace-RELEASE</spring-data-releasetrain.version>
</properties>
然后解决方案可以分解为两个问题 1.通过重用Spring Boot中用于配置Spring Data Neo4j的Neo4jProperties,提供与Neo4j的多个连接。 2.配置Spring Data Neo4j的session factory。
实现代码
以下代码位于本文示例项目using-multiple-session-factories/Domain1Config.java和Domain2Config.java中。 Spring Boot应用程序使用以下配置 application.properties
# Configuration for entities and repositories in "domain1"
spring.data.neo4j.username = neo4j
spring.data.neo4j.password = domain1
spring.data.neo4j.uri = bolt://localhost:7687
# Configuration for entities and repositories in "domain2"
spring.data.neo4j.domain2.username = neo4j
spring.data.neo4j.domain2.password = domain2
spring.data.neo4j.domain2.uri = bolt://localhost:7688