Controller层和Service层的关系
来源:6-3 登出,注册,校验功能开发
骑着猪找未来
2018-05-24
在听注册功能的时候,听到老师说只有在Service层接口那里声明了方法,controller层才能调用。想到一个问题,serviceimpl实现了接口里的方法,同时它也能新增接口里没有的方法,为什么这个时候新增的方法在接口里不声明的话,controller层就调用不到呢,把serviceimpl里的对象注入controller层,不应该能调用对象的方法才是吗,自己实现了下确实不能,不知道问题关键在哪?
4回答
-
慕沐0564158
2018-05-27
按我的理解,应该是多态机制.controller层中的成员变量是service,注入的是serviceimpl,相当于执行了这样一条语句: Service service=new ServiceImpl();所以controller中调用只能调用service中声明的方法
10 -
polo哦
2018-05-25
额 这不是能不能实现的问题,这是一种编程思想和规范,我们都说封装封装,其实实现接口就是一种封装的行为,也有人说面向接口编程(个人理解)
10 -
慕后端7408475
2018-06-08
serviceimpl直接注入到controller耦合性太强,不利于后期得扩展和维护,除非你是做一次性开发的,面向接口的思想考虑更多的是后期的工作
00 -
Geely
2018-06-03
你好同学,其实可以不用接口,直接注入serviceimpl到controller也是可以的呀~只不过我们要做的是面向接口编程,而且以后去做aop的时候也很方便,虽然CGLIB可以为类做代理,但是这不符合我们编程的目标。面向接口实现以后很多扩展都会很方便,例如 假设线上有2个版本,我们可以写两个实现就可以了。而controller里面注入是不需要动的,也可以动态的获取具体哪个实现。
00
相似问题