使用独立模式时出现 Neo4jTemplate 错误
Neo4jTemplate error when using standalone mode
在我的项目中,我使用 Spring 3 和 Neo4j 2.0.1,我使用的是嵌入式模式,一切正常。
在我的代码中,我使用 Neo4jTemplate(在我的服务中使用@Autowired)以及 GraphRepository 和 RelationshipOperationsRepository。
我想迁移我的代码以使用独立模式。这是我所做的:
- 在spring-context.xml中,我是这样写的:
<!-- Neo4J -->
<!-- neo4j:config storeDirectory="${neo.storeDir}" base-package="net.nextep.nextenergy.domain.graph" /-->
<bean id="graphDatabase" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg value="http://localhost:7474/db/data/" index="0"/>
</bean>
<neo4j:repositories base-package="net.nextep.nextenergy.repository.graph" />
我试着 运行 它,我得到了这个错误:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'neo4jTemplate' is defined
然后我尝试从我的服务中删除 @Autowired Neo4jTemplate
,使用 @Autowired private SpringRestGraphDatabase graphDB
并以这种方式创建一个新模板 private Neo4jTemplate template = new Neo4jTemplate((GraphDatabase) graphDB)
我仍然得到同样的错误:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userNodeRepository': Cannot resolve reference to bean 'neo4jTemplate' while setting bean property 'neo4jTemplate'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'neo4jTemplate' is defined
...
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'neo4jTemplate' is defined
...
UserNodeRepository :
@Repository
public interface UserNodeRepository extends GraphRepository<UserNode>,
RelationshipOperationsRepository<UserNode>{
public UserNode findById(String id);
public Node findNodeById(String id);
@Query("match (u:UserNode)-[:HABILITATED]->(f:Folder) where ID(u) = {0} return f")
public Set<Folder> getAllowedFoldersFirstLevel(UserNode user);
}
我做错了吗?
将您的 bean 命名为 "graphDatabaseService" 并将其传递给您未创建的配置:
<neo4j:config graphDatabaseService="graphDatabaseService" base-package="net.nextep.nextenergy.domain.graph" />
<bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg value="http://localhost:7474/db/data/" index="0"/>
</bean>
<neo4j:repositories base-package="net.nextep.nextenergy.repository.graph" />
在我的项目中,我使用 Spring 3 和 Neo4j 2.0.1,我使用的是嵌入式模式,一切正常。 在我的代码中,我使用 Neo4jTemplate(在我的服务中使用@Autowired)以及 GraphRepository 和 RelationshipOperationsRepository。
我想迁移我的代码以使用独立模式。这是我所做的:
- 在spring-context.xml中,我是这样写的:
<!-- Neo4J -->
<!-- neo4j:config storeDirectory="${neo.storeDir}" base-package="net.nextep.nextenergy.domain.graph" /-->
<bean id="graphDatabase" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg value="http://localhost:7474/db/data/" index="0"/>
</bean>
<neo4j:repositories base-package="net.nextep.nextenergy.repository.graph" />
我试着 运行 它,我得到了这个错误:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'neo4jTemplate' is defined
然后我尝试从我的服务中删除 @Autowired Neo4jTemplate
,使用 @Autowired private SpringRestGraphDatabase graphDB
并以这种方式创建一个新模板 private Neo4jTemplate template = new Neo4jTemplate((GraphDatabase) graphDB)
我仍然得到同样的错误:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userNodeRepository': Cannot resolve reference to bean 'neo4jTemplate' while setting bean property 'neo4jTemplate'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'neo4jTemplate' is defined
...
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'neo4jTemplate' is defined
...
UserNodeRepository :
@Repository
public interface UserNodeRepository extends GraphRepository<UserNode>,
RelationshipOperationsRepository<UserNode>{
public UserNode findById(String id);
public Node findNodeById(String id);
@Query("match (u:UserNode)-[:HABILITATED]->(f:Folder) where ID(u) = {0} return f")
public Set<Folder> getAllowedFoldersFirstLevel(UserNode user);
}
我做错了吗?
将您的 bean 命名为 "graphDatabaseService" 并将其传递给您未创建的配置:
<neo4j:config graphDatabaseService="graphDatabaseService" base-package="net.nextep.nextenergy.domain.graph" />
<bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg value="http://localhost:7474/db/data/" index="0"/>
</bean>
<neo4j:repositories base-package="net.nextep.nextenergy.repository.graph" />