使用嵌入式驱动程序时将过程部署到 Neo4J
Deploy a Procedure to Neo4J when using the embedded driver
我有一些逻辑需要直接节点访问 neo4j,但为了简单起见,应用程序的其余部分使用 Spring Data Neo4j (SDN)。我想使用带有@Procedure 的过程,但我不确定在使用 neo4j 嵌入式驱动程序和 SDN4 时如何使用该过程。我的配置非常简单,如下所示:
@Configuration
@EnableNeo4jRepositories(basePackages = "recommender.repository")
@ComponentScan(basePackages = "recommender")
@EnableTransactionManagement
public class MyNeo4jConfiguration extends Neo4jConfiguration {
@Bean
public SessionFactory getSessionFactory() {
System.out.println("******* GET SESSION FACTORY!!!!");
// with domain entity base package(s)
return new SessionFactory("recommender.model");
}
// needed for session in view in web-applications
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Session getSession() throws Exception {
return super.getSession();
}
这里有一个 属性 文件:
#EmbeddedSetup
driver=org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
#URI=file:/neo4j/data/graph.db
通过该设置,我可以在哪里放置带有@Procedure 和@Context(用于数据库访问)的class,SDN 的实现在war 部署期间可以访问它。
SDN 本身没有为您管理程序的功能。
但是,有一种方法可以访问底层的 GraphDatabaseService:
EmbeddedDriver embeddedDriver = (EmbeddedDriver) Components.driver();
GraphDatabaseService databaseService = embeddedDriver.getGraphDatabaseService();
使用它,您可以注册您的程序
((GraphDatabaseAPI) getDatabase()).getDependencyResolver().resolveDependency(Procedures.class).register(YourProcedure.class);
但是,不确定这是否适用于您在应用程序 class 路径中的过程 class- 值得一试。
我有一些逻辑需要直接节点访问 neo4j,但为了简单起见,应用程序的其余部分使用 Spring Data Neo4j (SDN)。我想使用带有@Procedure 的过程,但我不确定在使用 neo4j 嵌入式驱动程序和 SDN4 时如何使用该过程。我的配置非常简单,如下所示:
@Configuration
@EnableNeo4jRepositories(basePackages = "recommender.repository")
@ComponentScan(basePackages = "recommender")
@EnableTransactionManagement
public class MyNeo4jConfiguration extends Neo4jConfiguration {
@Bean
public SessionFactory getSessionFactory() {
System.out.println("******* GET SESSION FACTORY!!!!");
// with domain entity base package(s)
return new SessionFactory("recommender.model");
}
// needed for session in view in web-applications
@Bean
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Session getSession() throws Exception {
return super.getSession();
}
这里有一个 属性 文件:
#EmbeddedSetup
driver=org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
#URI=file:/neo4j/data/graph.db
通过该设置,我可以在哪里放置带有@Procedure 和@Context(用于数据库访问)的class,SDN 的实现在war 部署期间可以访问它。
SDN 本身没有为您管理程序的功能。 但是,有一种方法可以访问底层的 GraphDatabaseService:
EmbeddedDriver embeddedDriver = (EmbeddedDriver) Components.driver();
GraphDatabaseService databaseService = embeddedDriver.getGraphDatabaseService();
使用它,您可以注册您的程序
((GraphDatabaseAPI) getDatabase()).getDependencyResolver().resolveDependency(Procedures.class).register(YourProcedure.class);
但是,不确定这是否适用于您在应用程序 class 路径中的过程 class- 值得一试。