DepartmentController中的问题
问题1:定义的是DepartmentService接口,接口如何调用实例化类的方法?
问题2:为什么不是定义DepartmentService的实例化类呢?
public class DepartmentController {
@Autowired
private DepartmentService departmentService;
// /department/list.do department_list.jsp
public void list(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
List<Department> list= departmentService.getAll();
request.setAttribute("LIST",list);
request.getRequestDispatcher("../department_list.jsp").forward(request,response);
}
正在回答
同学你好。下面来一条条解答你的疑惑:
1、我们使用@Autowired实际注入的是实现类,Service标签注册的也是实现类。所以虽然用DepartmentService声明,也可以使用DepartmentServiceImpl的方法。

2、如果只是单纯数据注入,声明为实现类也是可以接收注入对象的。但在开发中往往会对实现类增强,如事务、日志等,这些是通过AOP动态代理实现的。springAOP使用动态代理,对实现类对象做增强得到的增强类与实现类是兄弟关系,所以不能用实现类接收增强类对象,只能用接口接收。
如果解答了同学的疑问,望采纳~
祝学习愉快~
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星