嗯,关于Spring Data Repository确实已经有了一个很好的答案,具体描述如下:Spring Data
Repository是如何实现的?。但是,在阅读您的问题时,我相信
@Autowired工作方式会有些混乱。让我尝试给出事件的高级顺序:
您将依赖项放在
EmployeeRepository
代码中:@Autowired
private EmployeeRepository employeeRepository;
通过执行步骤(1),您可以指示Spring容器在其 启动过程中* 应该找到该类的实例,该实例实现
EmployeeRepository
并将其注入到@Autowired
注释的目标中。我要在此 强调 一个事实,为了使注入正常工作,您应该在 运行时而不是在编译过程中 ,在Spring容器中让类的实例 实现所需的接口 。 *因此,现在出现了一个逻辑问题:“
UserRepository
如果我们没有明确定义该类,那么在Spring容器的启动过程中,该类将在Spring容器中实现的?”那是Oliver的详细回答。简而言之,发生的事情是在容器引导过程中,Spring Data会扫描所有存储库接口。创建实现这些接口的新类(代理);将这些类的实例放入Spring容器,该容器允许
@Autowired
查找和注入它们,就像对容器中其他任何Spring Bean一样。
同样,这些过程仅在您设置了Spring Data并正确配置后才起作用,否则实际上注入将失败。
希望这可以帮助。



