2014-03-13 82 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應用程序退出時。

相關問題