这个就跟Service直接用Java类还是用Interface/Implementation一样。关键是你自己认为是否合理,团队是否有严格要求。

为了说明这个问题,我在网上找了一些图。

web层,业务层,持久层,总体上是这样的关系:

再稍微详细点,是这样:

有一篇文章专门讲到这个2.4. Application Layering​terasolunaorg.github.io

下面简单总结一下这篇文章的思想。

在Spring架构里,是这样:

圆形代表Interface,长方形是Class

如果再考虑进去依赖注入,是这样:

上面这些图都没有直接告诉你Controller可以调用Repository(DAO)。甚至还能给出这个调用参考表:你发现了吗?Controller调用Repository是个X,就是不允许。而且Service调用Service都是警告。

Service调用Service会带来相互依赖问题,事务也不好处理。

原文对上面这个表有一段补充说明:It may be difficult to follow the above rules at the initial phase of application development. If looking at a very small application, it can be created quickly by directly calling the Repository from Controller.

翻译一下:

在应用开发的初始阶段,很难遵循上面的规则。如果是一个很小的应用,让Controller调用Repository会更加快速便捷。

java web dao层_java web 中web层直接调用dao层 可以吗?相关推荐

  1. java基础代码实例_java学习之web基础(3):Servlet 和 Request的登录处理实例

    在页面输入用户名和密码,进行权限判断. 登录成功跳转到SuccessServlet展示:登录成功!用户名,欢迎您: 登录失败跳转到FailServlet展示:登录失败,用户名或密码错误. 我们这里使用 ...

  2. java gis离线地图_java离线地图web GIS制作

    因为项目需求,要做一个web地图,之前做过高德的在线地图,它提供了一系列的API,并且由于是国产的,所以开发起来比较容易,现在由于项目是内网使用的,所以需要使用离线地图,由此便开始了: Web GIS ...

  3. java domain层_java框架中的controller层、dao层、domain层、service层、view层

    1.Controller层:接口层,用户访问请求时对接. Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程,控制的配置也同样是在Spring的配置 ...

  4. java ao层_Java学习过程中的一些记录 DO、DTO、BO、AO、VO、POJO定义 | 酷客365

    分层领域模型规约: DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象. DTO( Data Transfer Object):数据传输对象,Service或Ma ...

  5. java xfire指定参数名_Java编程中使用XFire框架调用WebService程序接口

    JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊. ...

  6. java 多线程bean 注入_java多线程中注入Spring对象问题

    信息加密之Base64 Base64是一种最简单的简单的加密形式,经常被使用,记录一下,以便日后可以深入了解. jdk格式: //获得密钥Base64Encoder encoder = new Bas ...

  7. Java私有方法解释_java接口中 定义 private 私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  8. java web系统拆分_Java系统中如何拆分同步和异步

    很多开发人员说,将应用程序切换到异步处理很复杂.因为他们有一个天然需要同步通信的Web应用程序.在这篇文章中,我想介绍一种方法来达到异步通信的目的:使用一些众所周知的库和工具来设计他们的系统. 下面的 ...

  9. java课程设计斗地主_Java课程设计---web版斗地主

    一. 团队课程设计博客链接 https://www.cnblogs.com/lanxiang/p/10293812.html 二.个人负责模块和任务说明 负责前后端数据传输 JSP界面的设计 根据后台 ...

  10. java泡泡堂分析_java泡泡堂 - WEB源码|JSP源码/Java|源代码 - 源码中国

    文件名大小更新时间 CrazyArcade\.classpath2952019-11-23 CrazyArcade\.gitignore12052019-11-23 CrazyArcade\.proj ...

最新文章

  1. YSlow使用指南_最新2.0使用指南中文版
  2. PHP PDO 连接SQLSErver,PHP 使用 PDO 方式连接 sqlserver ,拼接 的 sql 命令总是报错
  3. 在pymongo中使用distinct
  4. Opengl-模型(告别箱子加载模型)
  5. js获取当前时区GMT
  6. iframe给php传值,向iframe传递参数
  7. 中国甲真菌病药物行业市场供需与战略研究报告
  8. .Net学习(三):初识ASP.Net
  9. NoSQL之【MongoDB】学习(二):DML和查询操作说明
  10. python random库 伪随机 随机抽数字 抽学号
  11. Markdown安装,破解,修改中文
  12. 清空数据库里面所有表的数据的语句
  13. uboot如何驱动SD卡
  14. 主流前端框架的介绍优缺点
  15. perf_event 事件类型与分类
  16. 鸿鹄功能架构图:实现一站式异构数据分析
  17. PHP curl实现GET请求
  18. linux6.9 fc cache,(转载, 已看)fc-cache出错解决办法.
  19. 棋盘游戏 五子棋(1.人人对战)
  20. MTK6226-DS-PHB-SIMB-Load

热门文章

  1. JavaScript弹出新窗口居中显示
  2. 警告:隐式声明与内建函数‘exit‘不兼容解决方案
  3. orangepi找不到GPIO的解决方法
  4. utf-8编码的中文注释 在 sourceinsight 显示乱码的解决方法---utf8 转gb2312插件
  5. 支付宝 APP支付(证书)方式遇到的问题和解决办法
  6. 死锁产生的原因以及解决方法
  7. 如何在android中创建自定义对话框?
  8. 当maven说“直到MyRepo的更新间隔过去时,才会重新尝试解析”,该间隔在哪里指定?
  9. python range函数与numpy arange函数,xrange与range的区别
  10. TCP/UDP网络编程调试助手下载