有人可以告诉我如何使用spring-data为嵌入式neo4j数据库创建服务,但是在运行时而不是在启动时设置数据库的路径。在我的应用程序中,数据库的位置取决于用户的输入。我目前有一个数据库服务bean,定义如下:
@Bean
GraphDatabaseService graphDatabaseService() {
GraphDatabaseService graphDB = new GraphDatabaseFactory().newEmbeddedDatabase("/path/to/db");
return graphDB;
}
这不起作用,因为在应用程序启动之前我不知道该路径应该是什么。任何帮助在这里将不胜感激。
答案 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。