【发布时间】: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