我发现在 MVC 模式中,主要有 4 个类;控制器、服务、服务实现和回购。
服务是一个接口,服务实现实现服务类并包含所有逻辑代码。结构类似于:-
Service
接口
Service{
public void someMethod();
}
ServiceImpl
类
ServiceImpl implements Service{
public void someMethod(){
//do something
}
}
但是当我们想从控制器访问服务实现代码时,我们将服务类的方法调用为:-
@Autowired
Service service;
Object obj = service.someMethod();
控制器如何执行 ServiceImpl
类的代码
原文由 viper 发布,翻译遵循 CC BY-SA 4.0 许可协议
这基本上是 Spring 的工作原理:
服务实现应该是一个 Spring bean(它必须有一个
@Component
或@Service
注释,或者应该在 Spring XML 配置文件中定义),这样 Spring 就会找到它并将其注册到 Spring 应用程序上下文中。然后使用依赖注入,通过
@Autowired
注释,将服务的实现注入到控制器中。这意味着 Spring 将查看您的控制器,它将在service
成员变量上找到@Autowired
注释,并使用它在应用程序上下文中找到的 bean 对其进行初始化,这将是它先前注册的服务实现类的实例。因此,在 Spring 完成后,service
将引用ServiceImpl
的实例。有关依赖注入如何与 Spring 一起工作的信息,请参阅 Spring Framework 参考文档: IoC 容器