Mongo自定义存储库自动装配为空

时间:2014-03-17 12:39:16

标签: mongodb repository spring-data

我尝试自动装配我的自定义mongo存储库(似乎构造函数已执行)但结果仍为null

我看过一些类似的问题 Spring Data Neo4j - @Autowired Repository == nullspring data mongo repository is null

但我仍然不知道如何解决这个问题。

public class TestRepo {

@Autowired 
PersonRepository repository;

public void find(String name)
   {
        System.out.println(repository.findByName(name));
   }

}

配置

<mongo:repositories base-package="com.yyyy.zzz" />

PersonRepository

public interface PersonRepository extends Repository<Person, BigInteger> {

@Query("{name : ?0}")
public Person findByName(String name);
}

实施

public class PersonRepositoryImpl implements PersonRepository{

PersonRepositoryImpl()
{
   System.out.println("constructing");
}

public Person findByName(String name) {
    ...
}

}

如果我直接从上下文获取存储库bean,那么

1 个答案:

答案 0 :(得分:1)

您的存储库设置看起来很可疑。要执行查询方法,您根本不需要提供实现。我怀疑你当前的设置是PersonRepositoryImpl&#34;覆盖&#34;中的自定义实现。查询方法因此在执行时将是首选。

如果您只是删除实现类,Spring Data将在调用时自动为您执行查询。

一般来说,只有通过其他方式无法获得的功能(查询方法,Querydsl集成等)才需要自定义实现类。