春季数据的Neo4j - @Autowired仓库== NULL(Spring Data Neo

2019-09-20 06:23发布

我试着写使用Spring数据Neo4j的web应用程序。

我有一个存储库:

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的控制器,因为它是空...

哪里错了吗?

Answer 1:

@Autowired不适合工作static字段。

此外,它不是从设计的角度来看是一个好主意,使这个领域static



Answer 2:

一对夫妇的事情,我能想到的:

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

希望这有助于...



文章来源: Spring Data Neo4j - @Autowired Repository == null