【问题标题】:Has anyone got direct data access spring-data-neo4j working with Grails?有没有人使用 Grails 直接访问 spring-data-neo4j 数据?
【发布时间】:2014-11-13 13:15:08
【问题描述】:

是否有人设法让 spring-data-neo4j 在直接数据访问模式下与 Grails 一起使用,如 here 所记录的那样?

我无法让 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 时收到以下错误消息(这是一系列更长的嵌套异常,但这是主要原因):

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

我尝试将以下内容放入 Config.groovy:

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

这应该意味着我不需要在spring/resources.groovy中放任何东西吧?

无论如何,如果我在其中这样做似乎不起作用:

beans = {
    graphDatabase(GraphDatabase) {}
}

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

spring.RuntimeSpringConfigUtilities [RuntimeConfiguration] 无法 从 resources.groovy groovy.lang.MissingPropertyException 加载 bean: 没有这样的属性:类的 GraphDatabase:资源位于 资源$_run_closure1.doCall(resources.groovy:4) 在 grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:754) 在 grails.spring.BeanBuilder.beans(BeanBuilder.java:584) 在 grails.plugin.hibernate4.HibernatePluginSupport.checkExternalBeans(HibernatePluginSupport.groovy:464) 在 grails.plugin.hibernate4.HibernatePluginSupport$__clinit__closure1.doCall(HibernatePluginSupport.groovy:122) 在 grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:754) 在 grails.spring.BeanBuilder.beans(BeanBuilder.java:584) 在 grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:527) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)

【问题讨论】:

    标签: java grails spring-data spring-data-neo4j


    【解决方案1】:

    我没有。我上次检查时以为grails有某种插件,但我可能错了。无论哪种方式,这个其他人都是通过它的外观做到的。 use spring-data-neo4j in grails get UnsatisfiedDependencyException

    【讨论】:

    • 不幸的是,存在的插件仅适用于旧版本的 Grails,文档非常过时,开发人员提供的示例似乎已损坏。非常感谢链接,我明天睡一觉再看看!
    【解决方案2】:

    我有一个工作版本,因为这里有一些很棒的帮助:Grails @Autowire in Java class not working

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

    所有代码都在 Github here.

    【讨论】:

      猜你喜欢
      • 2012-05-02
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      相关资源
      最近更新 更多