当前位置: 首页 > 知识库问答 >
问题:

有没有人在使用Grails时可以直接访问spring-data-neo4j?

郑波
2023-03-14

是否有人设法让spring-data-neo4j在直接数据访问模式下使用Grails,如此处所述?

我无法让Grails尊重下面的@Autowired标记。下面的代码是spring在其文档中给出的示例的一个非常简单的版本:

package hello;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.kernel.impl.util.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.neo4j.config.EnableNeo4jRepositories;
import org.springframework.data.neo4j.config.Neo4jConfiguration;
import org.springframework.data.neo4j.core.GraphDatabase;

import java.io.File;

@Configuration
@EnableNeo4jRepositories(basePackages = "hello")
public class Application extends Neo4jConfiguration {

public Application() {
    setBasePackage("hello");
}

@Bean
GraphDatabaseService graphDatabaseService() {
    return new GraphDatabaseFactory().newEmbeddedDatabase("accessingdataneo4j.db");
}

@Autowired
PersonRepository personRepository;

@Autowired
GraphDatabase graphDatabase;

public String test() throws Exception {
    Person greg = new Person("Greg");
    String rc = "";

    Transaction tx = graphDatabaseService().beginTx();
    try {

        personRepository.save(greg);
        rc = personRepository.findByName("Greg").toString();

        tx.success();
    } finally {
        tx.close();
    }

    return rc;
}

}

我在执行grails run app时收到以下错误消息(这是一系列更长的嵌套异常,但这是主要原因):

创建在类路径资源[hello/TestGraph.class]中定义了名为“graphDatabase”的bean时出错:bean的实例化失败;嵌套异常为org。springframework。豆。工厂BeanDefinitionStoreException:工厂方法[public org.springframework.data.neo4j.core.GraphDatabase org.springframework.data.neo4j.config.Neo4jConfiguration.GraphDatabase()]引发异常;嵌套异常为java。lang.IllegalArgumentException:要求失败:无法使用空图形数据库

我已尝试将以下内容放入配置中。groovy:

grails.spring.bean.packages = ['org.neo4j.kernel', 'hello']

这意味着我不需要在spring/resources中放入任何内容。太棒了,不是吗?

在任何情况下,如果我在其中这样做似乎都不起作用:

beans = {
    graphDatabase(GraphDatabase) {}
}

在得到与之前相同的异常之前,我首先得到一个不同的异常:

SpringRuntimeSpringConfigUtilities[RuntimeConfiguration]无法从资源加载bean。groovy groovy。lang.MissingPropertyException:没有此类属性:类:resources位于resources$\u run\u closure1的GraphDatabase。grails上的doCall(参考资料.groovy:4)。SpringBeanBuilder。grails上的invokeBeanDefiningClosure(BeanBuilder.java:754)。SpringBeanBuilder。grails上的bean(BeanBuilder.java:584)。插件。hibernate4.HibernatePluginSupport。在grails上检查ExternalBeans(HibernatePluginSupport.groovy:464)。插件。hibernate4.HibernatePluginSupport$\uu clinit\uu closure1。grails上的doCall(HibernatePluginSupport.groovy:122)。SpringBeanBuilder。grails上的invokeBeanDefiningClosure(BeanBuilder.java:754)。SpringBeanBuilder。grails上的bean(BeanBuilder.java:584)。SpringBeanBuilder。java上的invokeMethod(BeanBuilder.java:527)。util。同时发生的未来任务。在java上运行(FutureTask.java:266)。util。同时发生的线程池执行器。java上的runWorker(ThreadPoolExecutor.java:1142)。util。同时发生的ThreadPoolExecutor$工作者。在java上运行(ThreadPoolExecutor.java:617)。lang.Thread。运行(Thread.java:745)

共有2个答案

司徒河
2023-03-14

由于这里有一些很棒的帮助,我已经有了一个工作版本:Java类中的Grails@Autowire不工作

主要问题似乎是Grails似乎不尊重SDN注释,有必要将配置代码放入spring/resources中。xml。

所有代码都在Github上。

窦英武
2023-03-14

我没有。我上次检查grails时以为它有某种插件,但我可能错了。不管怎样,从外表上看,这个人已经做到了。在grails get-UnsatifiedDependencyException中使用spring-data-neo4j

 类似资料:
  • 我想监控并定期记录有关Redis连接池使用情况的信息。 我通过spring-data-redis RedisTemboard对象使用Redis。 有办法进入游泳池吗?

  • 我正在学习Springboot,到目前为止我已经达到了JPA。我能够执行创建/读取/删除操作。但是对于某种情况下的更新,我面临着这个问题。让我在下面详细说明: 其余 API 网址: 请求正文: 这里,我不想在请求体中传递< code>id,而只想传递其余部分。由于JPA没有任何更新操作,所以我在< code>Repository中创建了一个自定义方法。下面是我在仓库类中的代码: 但是使用上面的代码

  • 本文向大家介绍如何实现一个私有变量,用getName方法可以访问,不能直接访问?相关面试题,主要包含被问及如何实现一个私有变量,用getName方法可以访问,不能直接访问?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: (1)通过defineProperty来实现   (2)通过函数的创建形式  

  • 问题内容: 还是我必须有一个调用env-> NewDirectByteBuffer(buffer,size)的JNI帮助函数? 问题答案: 我要做的是创建一个普通的DirectByteBuffer并更改其地址。 从这一点开始,您可以访问引用基础地址的ByteBuffer。我这样做是为了访问网络适配器上的内存以实现零拷贝,并且工作正常。 您可以直接为您的地址创建一个DirectByteBuffer,

  • 所以我正在创建一个库,它将有一个类一些基地{};这将由下游用户在许多类中派生。 我还有一个指向someBase的指针向量,我正在这样做:- 现在分析表明虚拟调用上的分支错误预测是我的代码中的(几个)瓶颈之一。我想做的是以某种方式访问对象的RTTI并使用它根据类类型对子向量进行排序,以改进指令缓存局部性和分支预测。 关于如何做到这一点有什么建议/解决方案吗? 要记住的主要挑战是:- 1.)我真的不知

  • 定义在components文件下的子组件 然后在views文件夹中,直接使用,并没有import引入,也没有注册在components中为什么可以直接使用 ?