我正在构建一个小型的概念验证Spring Boot应用程序,它应该连接到一个Neo4j实例,并在几个不同的节点上执行一些基本操作。如果我将主应用程序类连接到使用以下代码创建嵌入式Neo4j服务,那么一切都可以正常工作。(这是基于工作示例https://spring.io/guides/gs/accessing-neo4j-data-rest/)
@Bean(destroyMethod = "shutdown")
public GraphDatabaseService graphDatabaseService() {
return new GraphDatabaseFactory().newEmbeddedDatabase("target/hello.db");
}
这是我能找到的唯一一个从spring boot连接到Neo4j服务器的代码示例。如果我尝试连接到远程服务器,代码将无法启动,问题末尾出现异常。我们的计划是运行一个集中的Neo4j实例,这显然是一个常见的生产需求。
我应该如何配置我的bean以连接到远程Neo4j数据库,或者有人知道这种设置的可靠工作示例吗?
谢谢!
我的pom.xml包括以下内容:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j-rest</artifactId>
<version>3.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
我已经看到了使用SpringCypherRestGraphDatabase的几个引用,所以我在我的Main应用程序类中处理了这个问题,如下所示:
import org.neo4j.graphdb.GraphDatabaseService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.neo4j.config.EnableNeo4jRepositories;
import org.springframework.data.neo4j.config.Neo4jConfiguration;
import org.springframework.data.neo4j.rest.SpringCypherRestGraphDatabase;
@SpringBootApplication
@EnableNeo4jRepositories
public class ProfileServiceApplication extends Neo4jConfiguration {
public ProfileServiceApplication() {
setBasePackage("profile");
}
@Bean
public GraphDatabaseService graphDatabaseService() {
return new SpringCypherRestGraphDatabase("http://localhost:7474/db/data/","neo4j","password");
}
public static void main(String[] args) {
SpringApplication.run(ProfileServiceApplication.class, args);
}
}
当我尝试使用此配置运行时,我得到以下错误:
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.neo4j.graphdb.GraphDatabaseService]: Circular reference involving containing bean 'profileServiceApplication' - consider declaring the factory method as static for independence from its containing instance. Factory method 'graphDatabaseService' threw exception; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/neo4j/core/UpdateableState
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)
因此,这里有一个pplication.properties文件连接到您的Neo4j。
spring.data.neo4j.uri=bolt://localhost
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=Your_Password
将Neo4j数据库作为控制台应用程序启动,该应用程序最有可能在localhost:7474端口上运行。
要启动的命令:
neo4j console
还要检查依赖关系。因为最新版本仅适用于
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
请将您的应用程序分享为github项目进行测试。也许这也是Spring引导启动器的依赖问题?你使用的是哪个引导版本??
也许您可以检查mvn dependency:tree
是否有任何较旧版本的SDN,如果有,请更新spring boot starter的neo4 version属性。
示例应用程序在这里:
http://neo4j.com/developer/java/#_using_spring_data_neo4j
正如您正确看到的,它也在文档中:
http://docs.spring.io/spring-data/data-neo4j/docs/3.3.0.RELEASE/reference/html/#using_spring_data_neo4j_as_a_neo4j_server_client
我们的组织有一个远程SQL数据库,我正试图使用PyODBC连接到该数据库。 下面是测试代码:- 但是,当我尝试使用PyODBC连接时,我无法连接并得到以下错误。 PyODBC.OperationalError:('08001','[08001][Microsoft][ODBC SQL Server驱动程序][DBNETLIB]SQL Server不存在或访问被拒绝.(17)(SQLDriverCo
我在A机上设置了伪分布式模式的Hadoop和Hbase,我正在B机上运行我的客户端(Java程序)(A机和B机可以互相通信)。但我这样做面临问题。 我的客户端代码如下所示: 配置config=HBaseConfiguration.create(); config.set(“HBase.ZookeePer.quorum”,zookeeperLocation);config.set(“hbase.zo
问题内容: 我刚刚在网络托管服务上设置了MySQL数据库,并尝试使用以下php远程连接至该数据库: 我对php和MySQL还是很陌生,我不了解几件事。我已将上面的代码保存在文件中(称为demo.html),并尝试在Web浏览器中查看它(当前它不显示任何内容)。 我的托管公司告诉我,应该使用数据库连接 我以为我需要包括IP地址(使用PhPMyAdmin登录时看到的地址),因此我也添加了该地址。但是,
问题内容: 我正在尝试使用jstatd用jps查询远程JVM,以便最终使用VisualVM对其进行监视。 我让jstatd使用以下安全策略运行: jstatd在带有1.6.0_10版本的HotSpot vm的64位Linux机器上运行。jstatd命令是: 我正在尝试从Windows 7计算机运行jps。由于防火墙的限制,我通过SSH隧道将RMI数据通过隧道传输到我的Windows计算机,这样jp
当我试图将我的一台机器用作WinRM客户端以连接到另一台机器时,我的一台机器出现问题。场景是: Window 7上的问题机器(VM A)已经启用了WinRM(已经运行winrm快速配置,Enable-PSRemoting),然后我将远程机器(VM C)的IP添加到VM A的受信任主机中,然后运行Test-WSMan,我得到这个错误Test-WSMan: 客户端无法连接到请求中指定的目标。验证目标上
问题内容: 我已经在服务器上安装了Kibana 5.4和Elastic search 5.4,我可以通过使用本地计算机上的curl来访问Kibana和Elastic search 我得到以下回应 var hashRoute =’/ app / kibana’; var defaultRoute =’/ app / kibana’; var hash = window.location.hash;