我尝试自动装配我的自定义mongo存储库(似乎构造函数已执行)但结果仍为null
我看过一些类似的问题 Spring Data Neo4j - @Autowired Repository == null 和 spring 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,那么
答案 0 :(得分:1)
您的存储库设置看起来很可疑。要执行查询方法,您根本不需要提供实现。我怀疑你当前的设置是PersonRepositoryImpl
&#34;覆盖&#34;中的自定义实现。查询方法因此在执行时将是首选。
如果您只是删除实现类,Spring Data将在调用时自动为您执行查询。
一般来说,只有通过其他方式无法获得的功能(查询方法,Querydsl集成等)才需要自定义实现类。