2

我尝试使用 Spring Data Neo4j 编写一个 webapp。

我有一个存储库:

public interface UserRepository extends GraphRepository<Neo4jUser> {} 

一个applicationcontext.xml:

...
<context:component-scan base-package="de.wilke.test.neo4j" >
    <context:exclude-filter type="annotation" 
          expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!-- REST Connection to Neo4j server --> 
<bean id="restGraphDatabase" 
    class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
    <constructor-arg value="http://localhost:7474/db/data/" />
</bean>

<bean id="myservice" class="de.wilke.test.neo4j.Neo4jResource">
</bean>

<!-- Neo4j configuration (template) -->
<neo4j:config graphDatabaseService="restGraphDatabase" />

<!-- Package w/ automagic repositories -->
<neo4j:repositories base-package="de.wilke.test.repository" /> 

还有我的 Neo4jResource:

@Controller
public class Neo4jResource {

    @Autowired
    public static UserRepository repo;
    ...

现在不能在 Controller 中使用 UserRepository,因为它是空的......

错误在哪里?

4

2 回答 2

0

@Autowired不适用于static字段。

从设计的角度来看,制作这个领域也不是一个好主意static

于 2012-07-26T09:27:12.067 回答
0

我能想到的几件事:

  1. 您的<neo4j:repositories base-package=".."/> is not correct
  2. 您没有applicationContext正确加载并且repo没有正确实例化

首先检查你的包裹。另外,您的主应用程序中是否有以下内容?

ConfigurableApplicationContext context;
context = new ClassPathXmlApplicationContext("spring/applicationContext.xml");

Neo4jResource myBean = context.getBean(Neo4jResource.class);
myBean.functionThatUsesTheRepo();

希望这会有所帮助...

于 2012-11-14T21:51:38.687 回答