controller和service
做 web 开发,无论哪个语言,无论哪个框架都有 controller 和 service 两个概念,很多时候也分不清楚逻辑写在 controller 还是 service ,框架一般也不做强制限制,都在于开发者自身的素质能力以及对框架的认知。
究竟什么是 controller,可以说他是对 http 中 request 的解析,以及对 response 的封装,它对应的是每一个路由,是 http 请求到代码的一个承接,它必须是可单例的,是无状态的。
service 顾名思义是为了服务而生,为了业务而生,是为了一个抽象而生,可以写一个 EmailService 去处理邮件的相关逻辑,写一个 AuthorizationService 去处理登录注册,总之是为了处理一系列的业务,在这个层次你不应该去访问 http 中的参数,而是在 controller 中传递一个参数,或者构造一个对象传递到 service。
controller 和 service 也应该是多对多的关系,一个 controller 中当然是可以调用多个 service,一个 service 当然也可以被多个 controller 调用,service 还可以是互相调用。
那为什么 service 中不应该访问 http 相关的参数呢,其实以著名 php 框架 laravel 为例,laravel 中 有个 command 文件夹,可以写一些执行命令,这些命令的业务可能和某个 http 接口是一样的,但是 http 接口可能需要进行签名,token之类的等等规则的校验,但是使用 command 去调用 service 可以直接执行到核心逻辑。
以上的 command 只是举个例子,想表达的意思是 service 是可以被各种环境调用,虽然更多时候它只有一种能力,仅仅去处理 controller 发过来的 http 请求,但是它应该是一个抽象,应该被抽象。
作者:追风骚年
链接:https://www.jianshu.com/p/7dba237b14d3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
controller和service相关推荐
- Spring中的Controller ,Service,Dao是不是线程安全的?
作者:myseries cnblogs.com/myseries/p/11729800.html 结论:不是线程安全的 Spring容器中的Bean是否线程安全,容器本身并没有提供Bean的线程安全策 ...
- 多模块打包后,扫描不到@controller和@service,实现 ADD DIRECTORY ENTRIES
多模块打包后,扫描不到@controller和@service等Bean. 原因:打包时没有生成目录信息 解决办法: 1.在eclipse或者myeclipse 打包时 勾选 ADD DIRECTOR ...
- koa --- [MVC实现之四]Router、Controller、Service的实现
说明 上一篇: [MVC实现之三] 上一篇实现了,Router层.Controller层.Service层的基本原则,并且成功的通过Mar类来传递这些层级之间需要的参数. 这一篇主要是通过业务层面来具 ...
- springboot基于mybatis扫描jar包中的controller、service、dao、xml
springboot基于mybatis扫描jar包中的controller.service.dao.xml 最近有这样的需求,是将某个业务模块接口,比如新闻的接口模块 作为一个公共固定的模块,整个包括 ...
- Controller、Service、Dao进行Junit单元
原文链接:http://blog.csdn.net/u013041642/article/details/71430293 Spring对Controller.Service.Dao进行Junit单元 ...
- vo、dto、bo、do、po的概念理解以及与controller、service、dao层的对应关系
目录 概念 关于do的理解 业务逻辑分层 基于springboot的逻辑分层结构 什么时候需要定义这么多O 实际项目中的使用方式 同一微服务中 不同微服务 一般起名规则 概念 VO(View Obje ...
- springmvc测试类中如何引入controller与service,request,respon
使用的引入注解不同 (引入controller的时候有时候会拿不到,那是因为controller类的最上面,没有引入@Controller注解:) @RunWith(SpringJUnit4Class ...
- 在Controller注入Service报错的解决方法
在Controller注入Service报错的解决方法 参考文章: (1)在Controller注入Service报错的解决方法 (2)https://www.cnblogs.com/zhangxj/ ...
- 彻底弄懂@Controller 、@Service、@Component
今天主要聊聊@Controller .@Service和@Component这三个注解的关系和区别.网上很多人对这三个注解进行了详细的解释,但是仅仅局限于理论,个人对于没有经过自己验证的结果总是持怀疑 ...
- nestjs入门(controller,service,module)
nestjs中比较重要的几个概念controller,module,service,每个nestjs的模块都有以上3个基本文件组成. module:是用来对外暴露当前模块,以及该模块下需要用到的con ...
最新文章
- linux 下载jdk
- SpringBoot应用部署于外置Tomcat容器
- Linux使用iptables设置黑白名单
- python字典的特点是什么_Python中dict的特点
- POJ 2653 Pick-up sticks (线段相交)
- java空文本_输出到文本文件,控制台为空-Java
- 【性能测试】性能需求挖掘、性能方案制定及压测场景设计之疑惑与思考(一)
- NiceScroll文档阅读笔记-NiceScroll(3.7.6)基本使用
- java 常用 函数_java在线报表中有哪些常用函数
- linux expect案例用法
- 中国搜索20年:巨头百度的兴衰密码
- 安全防范报警系统产品质量监督检测测试中心(上海)
- 信度和效度经典例子_信度与效度公式的纠正
- Oracle安装之后电脑变慢
- 什么是数字“指纹”?
- html2canvas页面滚动时截图不全空白问题
- 你真的了解验证码吗?
- BSD维基百科,自由的百科全书
- xiao297328是个骗子,大家注意了啊
- Oracle教学辅助.书写历史的甲骨文--ORACLE公司传奇