在运行时设置嵌入式neo4j数据库的路径

时间:2014-03-13 19:45:59

标签: java neo4j spring-data

有人可以告诉我如何使用spring-data为嵌入式neo4j数据库创建服务,但是在运行时而不是在启动时设置数据库的路径。在我的应用程序中,数据库的位置取决于用户的输入。我目前有一个数据库服务bean,定义如下:

@Bean
GraphDatabaseService graphDatabaseService() {
  GraphDatabaseService graphDB = new GraphDatabaseFactory().newEmbeddedDatabase("/path/to/db");
  return graphDB;
}

这不起作用,因为在应用程序启动之前我不知道该路径应该是什么。任何帮助在这里将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您已在配置类中指定此bean,我认为您无法执行此操作。如果您在此文件中指定了它,请确保在创建方法上添加@Bean(destroyMethod = "shutdown")注释。

您可以在运行时指定单例bean。拥有数据库目录时,您可以执行类似的操作:

GraphDatabaseService graphDB = new GraphDatabaseFactory().newEmbeddedDatabase("user_dir");
// get a hold of ConfigurableApplicationContext#getBeanFactory()
beanFactory.registerSingleton("graphDatabaseService", graphDB);

确保在应用程序退出时关闭GraphDatabaseService。