2014-03-13 58 views
1

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

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

这不工作,因为我不知道这条道路应该是什么,直到应用程序启动后。任何帮助在这里将不胜感激。

回答

1

我不认为你可以这样做,如果你已经在你的配置类中指定了这个bean。如果您确实在此文件中指定它,请确保您在创建方法中添加了@Bean(destroyMethod = "shutdown")注释。

您可以在运行时指定singleton bean。当你有数据库目录,你可以做一些与此类似:

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

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

相关问题