采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
在听注册功能的时候,听到老师说只有在Service层接口那里声明了方法,controller层才能调用。想到一个问题,serviceimpl实现了接口里的方法,同时它也能新增接口里没有的方法,为什么这个时候新增的方法在接口里不声明的话,controller层就调用不到呢,把serviceimpl里的对象注入controller层,不应该能调用对象的方法才是吗,自己实现了下确实不能,不知道问题关键在哪?
按我的理解,应该是多态机制.controller层中的成员变量是service,注入的是serviceimpl,相当于执行了这样一条语句: Service service=new ServiceImpl();所以controller中调用只能调用service中声明的方法
额 这不是能不能实现的问题,这是一种编程思想和规范,我们都说封装封装,其实实现接口就是一种封装的行为,也有人说面向接口编程(个人理解)
serviceimpl直接注入到controller耦合性太强,不利于后期得扩展和维护,除非你是做一次性开发的,面向接口的思想考虑更多的是后期的工作
你好同学,其实可以不用接口,直接注入serviceimpl到controller也是可以的呀~只不过我们要做的是面向接口编程,而且以后去做aop的时候也很方便,虽然CGLIB可以为类做代理,但是这不符合我们编程的目标。面向接口实现以后很多扩展都会很方便,例如 假设线上有2个版本,我们可以写两个实现就可以了。而controller里面注入是不需要动的,也可以动态的获取具体哪个实现。
登录后可查看更多问答,登录/注册
前后端分离,数据库接口设计,架构设计,功能开发,上线运维
11.3k 10
2.3k 22
1.9k 21
2.8k 21
2.6k 18
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号