Установить путь к встроенной базе данных neo4j во время выполнения

1

Может ли кто-нибудь сказать мне, как я могу создать сервис для встроенной базы данных neo4j с использованием Spring-данных, но установить путь к базе данных во время выполнения, а не при запуске. В моем приложении местоположение базы данных зависит от ввода от пользователя. В настоящее время у меня есть компонент службы базы данных, который определяется следующим образом:

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

Это не работает, потому что я не знаю, какой должен быть этот путь до тех пор, пока приложение не запустится. Любая помощь здесь будет оценена по достоинству.

Теги:
neo4j
spring-data

1 ответ

1

Я не думаю, что вы можете это сделать, если вы укажете этот компонент уже в своем классе конфигурации. Если вы укажете его в этом файле, убедитесь, что вы добавили @Bean(destroyMethod = "shutdown") в свой метод создания.

Вы можете указать singleton beans во время выполнения. Когда у вас есть каталог базы данных, вы можете сделать что-то похожее на это:

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

Обязательно выключите GraphDatabaseService, когда приложение завершит работу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню