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中声明的方法

1
0

polo哦

2018-05-25

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

1
0

慕后端7408475

2018-06-08

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

0
0

Geely

2018-06-03

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

0
0

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9476 学习 · 8804 问题

查看课程