gpt4 book ai didi

java - 从异步方法访问 Neo4j

转载 作者:行者123 更新时间:2023-12-02 03:56:04 25 4
gpt4 key购买 nike

我的Web应用程序使用Neo4j作为数据存储,它使用Spring Data Neo4j 4框架。

按照教程中的建议,我的 neo4j session 绑定(bind)到我的 HTTP session :

@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Session getSession() throws Exception {
return super.getSession();
}

我有一个端点运行耗时的查询,并离线发送结果。我想将此方法移至 @Async 线程,但显然我无法从该线程访问我的 neo4j session 。

在 HTTP session 之外访问 neo4j 存储库而不更改“主” session bean 范围的最佳实践是什么?

最佳答案

我不确定最佳实践,但您不能从 sessionFactory#openSession() 方法创建另一个 session 吗?并将该新 session 传递给 neo4jOperations 的另一个实例(如果不使用现有的 bean,则@Override),从而避免使用 proxyScoped Neo4jConfiguration#getSession() 方法。

像这样:

// note below assumes you are extending Neo4jConfiguration

// ...

// passing in your own non proxyScoped session.
// @Override existing neo4jTemplate @Bean passing in your own session

@Bean
@Override
public Neo4jOperations neo4jTemplate() throws Exception {
return new Neo4jTemplate(getSessionFactory().openSession());
}

// or create another neo4jTemplate instance that avoids getSession() proxyScope method usage in its constructor.

@Bean("nonProxyScopedNeo4jOperations")
public Neo4jOperations nonProxyScopedNeo4jTemplate() throws Exception {
return new Neo4jTemplate(getSessionFactory().openSession());
}

// ...

并使用自定义 neo4jOperations bean 来执行 @Async 逻辑

参见Neo4jConfiguration :

关于java - 从异步方法访问 Neo4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35437715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com