2012-07-26 113 views
2

我尝试使用Spring Data Neo4j编写webapp。Spring Data Neo4j - @Autowired Repository == null

我有一个存储库:

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; 
    ... 

现在不能使用UserRepository在控制器,因为它是空的...

错误在哪里?

回答

0

@Autowired不适用于static字段。

从设计的角度来看,这个字段不是一个好主意static

+0

对不起,但其仍然是 “零” ... – Tschakle 2012-07-26 11:18:09

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(); 

希望这有助于...