请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Controller层和Service层的关系

在听注册功能的时候,听到老师说只有在Service层接口那里声明了方法,controller层才能调用。想到一个问题,serviceimpl实现了接口里的方法,同时它也能新增接口里没有的方法,为什么这个时候新增的方法在接口里不声明的话,controller层就调用不到呢,把serviceimpl里的对象注入controller层,不应该能调用对象的方法才是吗,自己实现了下确实不能,不知道问题关键在哪?

正在回答 回答被采纳积分+3

4回答

慕沐0564158 2018-05-27 14:41:11

按我的理解,应该是多态机制.controller层中的成员变量是service,注入的是serviceimpl,相当于执行了这样一条语句: Service service=new ServiceImpl();所以controller中调用只能调用service中声明的方法

1 回复 有任何疑惑可以回复我~
polo哦 2018-05-25 18:25:07

额 这不是能不能实现的问题,这是一种编程思想和规范,我们都说封装封装,其实实现接口就是一种封装的行为,也有人说面向接口编程(个人理解)

1 回复 有任何疑惑可以回复我~
慕后端7408475 2018-06-08 10:39:36

serviceimpl直接注入到controller耦合性太强,不利于后期得扩展和维护,除非你是做一次性开发的,面向接口的思想考虑更多的是后期的工作

0 回复 有任何疑惑可以回复我~
Geely 2018-06-03 12:30:35

你好同学,其实可以不用接口,直接注入serviceimpl到controller也是可以的呀~只不过我们要做的是面向接口编程,而且以后去做aop的时候也很方便,虽然CGLIB可以为类做代理,但是这不符合我们编程的目标。面向接口实现以后很多扩展都会很方便,例如 假设线上有2个版本,我们可以写两个实现就可以了。而controller里面注入是不需要动的,也可以动态的获取具体哪个实现。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号