使用嵌入式驱动程序时,将一个过程部署到Neo4J

4

我有一些需要直接访问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(用于数据库访问)的类放在哪里,以便SDN的实现在War部署期间可以访问它。

1个回答

3

SDN本身没有管理过程的功能。不过,有一种方法可以访问底层的GraphDatabaseService:

 EmbeddedDriver embeddedDriver = (EmbeddedDriver) Components.driver();
 GraphDatabaseService databaseService = embeddedDriver.getGraphDatabaseService();

使用此功能,您可以注册您的过程。
((GraphDatabaseAPI) getDatabase()).getDependencyResolver().resolveDependency(Procedures.class).register(YourProcedure.class);

不过,不确定这是否适用于应用程序类路径中的过程类- 不过还是值得尝试。


你能否为了清晰起见说明一下 getDatabase() 是从哪里来的? - Christoph Möbius
getDatabase() 将返回在前面几行设置的 databaseService。 - Luanne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接