Spring MVC 应用架构经典之路

Spring MVC介绍 Spring MVC 全名是 Spring Web MVC,简称 Spring MVC或者 Spring Web.Spring MVC 是基于Servlet API的web框架,从一开始Spring框架是包含Spring MVC部分,也就是说Spring MVC是Spring 框架的一部分。 阅读详情

架构设计两大支柱思维:
能够通过分解或者分层进行应用简化
首先分析应用的功能需求
然后决定如何对应用进行分解或者分层
也就是说这个策略会帮助我们将应用如何合理分层,以及每一层应该处理的功能。
要能够让分层的逻辑简单直接
换句话说,不能因为分层反而造成应用变得复杂
一般对于一个网络应用程序,大致包含如下功能:
处理用户的输入内容,然后返回给用户需要的内容
需要对程序中出现的错误返回给用户合理的问题描述
事务处理
进行用户的授权和认证
实现应用程序的业务处理
和数据存储系统以及外部系统进行交互

我们把程序的功能实现分为三层进行处理:
web 层,网络应用程序的最外层,负责处理用户的输入然后返回用户需要的内容;web层要负责异常处理的信息展示;web层是程序的入口,它要作为第一道防线,来对用户进行认证和授权。

service层,它位于web层之下,执行一个事务逻辑完整处理,通常包括应用服务和基础服务。应用服务提供了service层的公共接口,作为事务的完整处理,它也负责授权认证。基础服务负责和外部资源,比如文件系统,数据库系统,邮件服务器,进行数据传输。通常这些服务被多个应用服务所使用。
repository层,网络应用程序的最底层,它负责和数据存储器打交道,增删改,查询等等。

下面要理清层与层之间如何交互,也就是接口如何定义。我们会用到两个术语:DTO数据传输对象和Domain Model业务模型对象。

DTO比较好理解,就是数据的承载对象,负责在层与层中间的数据传递,而业务模型则包含了三种类型:
无状态业务服务对象,提供与业务概念相关但又不属于一个实体或者值对象的一些操作;
实体对象对应于能够在整个生命周期都保持一个唯一标识的对象;
值对象描述一个属性,它没有唯一标识,它的生命周期只能与一个实体对象绑定。

这里会对DTO产生疑问,为什么不能直接传递给web层实体对象或者值对象?
如果传递实体对象到web层,那么web层就必须了解如何使用它们,web层承担了它职责以外的事情;相反如果仅传递DTO,web层的代码看起来会更加简洁清晰。

如果暴露细节给web层,对于业务模型的修改就会受到牵制;如果仅传递DTO,那么只要保持DTO不变,业务模型可以根据需要进行各种程度的更改。
根据以上分析,我们得出最终的架构设计:

以上翻译自:
https://www.petrikainulainen.net/software-development/design/understanding-spring-web-application-architecture-the-classic-way/

spring mvc,spring和springboot的关系 Spring 框架是基础,提供了核心功能和模块。Spring MVC是 Spring 框架的一部分,专注于 Web 应用开发。是 Spring 框架的扩展,通过自动配置和起步依赖简化了 Spring 应用的开发。Spring 框架提供了全面的企业级应用开发功能。Spring MVC是 Spring 框架的一部分,专注于 Web 应用开发。是 Spring 框架的扩展,通过自动配置和起步依赖简化了 Spring 应用的开发。 阅读详情

相关推荐

Spring Web MVC

Spring MVC 是个实现了 MVC 模式的 Web 框架Spring Boot 只是实现Spring MVC的其中种式已.Spring Boot 可以添加很多依赖, 借助这些依赖实现不同的功能. Spring Boot 通过添加Spring WebMVC框架, 来实现web功能不过Spring在实现MVC时, 也结合项的特点, 做了些改变@RequestMapping 是 Spring Web MVC 应程序中最常被到的注解之,它是来注册接的路由映射的.

Ase5gqe的博客 1447

SpringMVC学习之三层架构

Spring MVC关于三层架构和MVC 三层架构 ​ 我们的开发架构一般都是基于两种形式,一种是C/S架构,也就是客户端/服务器,另一种是B/S架构,也就是浏览器/服务器。在JavaEE开发中,几乎全都是基于B/S架构的开发。那么在B/S架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构在我们的实际开发中使用的非常多,所以我们的案例也都是基于三层架构设计的。 ​ 三层架构中,每一层...

qq_41425382的博客 2099

软件体系架构PPT( Spring SpringMVC Mybatis 框架基础)

该PPT资源适合SSM框架0基础的新手入门,涵盖了许多基础知识和概念,便于小白的理解。同时包含了代码案例,图文并茂、讲解丰富、将理论与实际相结合,可用于自学,也可用于教师的讲义。

(一)Spring’s MVC Architecture

Spring’s MVC module Spring’s MVC module is based on front controller design pattern followed by MVC design pattern. All the incoming requests are handled by the single servlet named DispatcherSe...

weixin_30455067的博客 159

SSM框架以及Spring、SpringMVC、MyBatis分别都画了思维导图一共四幅图

SSM框架以及Spring、SpringMVC、MyBatis分别都画了思维导图一共四幅图。

springMVC架构设计

详细讲述了springMVC基础知识,实例丰富,一步步讲解,实践。

SpringMVC框架(详解)

Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把(M)Model,(V)View,(C)Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。MVC 优点: 多视图共享一个模型,大大提高代码的可重用性 MVC三个模块相互独立,松耦合架构 控制器提高了应用程序的灵活性和可配置性 有利于软件工程化管理完美的系统架构 = 松耦合+高重用性+高扩展性MVC 缺点: 原理复杂 增加了

passerby的博客 7339

Acer宏碁暗影骑士擎AN515-58原厂系统恢复指南:从ISO镜像到完整出厂设置

本文详细介绍了为Acer宏碁暗影骑士擎AN515-58游戏本恢复原厂系统的完整指南。从准备工作、数据备份到下载官方镜像、制作恢复U盘,再到BIOS设置与恢复流程,一步步教你如何将系统完整还原至出厂状态,确保所有硬件驱动、NITROSENSE控制中心等专属优化功能恢复正常,解决系统卡顿、功能异常等问题。

weixin_29271263的博客 1093

深入解析 Spring MVC 框架:原理、应用与最佳实践

Spring MVC 是 Spring 框架的一个模块,用于构建基于 Java 的 Web 应用程序。它是一个轻量级的、基于 Java 的 Web 框架,遵循经典的 MVC(Model - View - Controller)设计模式,将 Web 应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分,从而实现代码的高内聚、低耦合,提高代码的可维护性和可扩展性。在 MVC 模式中,模型(Model)负责封装数据和业务逻辑,它包含了应用程序的核心数据结构和处理数据的算法。

1360

QuickFix Java 讲解(五)消息的收发与查看

本系列力求手把手教你怎样利用QuickFix Java 搭建自己的 FIX 协议收发平台,以及其中的注意事项。 所有源码的地址(免费): https://github.com/zongzhec/QuickFixPractise 这节我们讨论将Acceptor和Initiator启动以后,收到的消息极其查看方式。 6. 收发双方的通信 6.1. 启动后的通信和登录 为方便起见,这里我们使用统一的源码:https://github.com/zongzhec/QuickFixPractise ..

2245

从BIOS到路由器:深入拆解SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)奥秘

本文深入解析SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)技术,从BIOS到路由器的应用场景出发,详细介绍了其架构精髓、典型连接方案、时序设计及性能优化方法。通过实际案例和参数对比,帮助开发者掌握NOR Flash在嵌入式系统中的关键作用与设计技巧,提升电路设计效率与可靠性。

weixin_30522183的博客 491

Spring MVC 深入解析:架构、原理与最佳实践

知识体系构建掌握请求生命周期处理流程熟练使用常用注解(@RequestMapping, @ModelAttribute等)理解数据绑定与验证机制实践路线图复制基础Web应用 → REST API开发 → 全局异常处理 → 性能优化 → 安全加固推荐学习资源官方文档:Spring Framework Reference书籍:《Spring in Action》实战项目:电商后台管理系统开发建议通过实际项目练习以下高级主题:实现文件分片上传功能开发国际化多语言站点构建API网关层。

weixin_73344672的博客 725

ROS 2 Jazzy与Gazebo Harmonic仿真实战:从零搭建机器人仿真环境与高级应用

本文详细介绍了如何使用ROS 2 Jazzy和Gazebo Harmonic从零搭建机器人仿真环境,涵盖环境配置、传感器集成、多机器人协同和GPU加速优化等高级应用。通过实战案例和性能调优技巧,帮助开发者高效构建可靠的机器人仿真系统,提升开发效率。

h9j8k7l6m5n的博客 1217

Spring MVC常用注解(绝对经典)

学习 spring MVC 可以说,就是学习其注解,本文总结了 spring MVC 开发中常用的注解,希望能够帮助到您。

2301_80035594的博客 4342

适合小白的超详细yolov8环境配置+实例运行教程,从零开始教你如何使用yolov8训练自己的数据集(Windows+conda+pycharm)

yolov8源码下载地址:GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLiteyolov8使用文档: Home - Ultralytics YOLOv8 Docs教学视频参考: 包会!YOLOv8训练自己的数据集_哔哩哔哩_bilibili先用conda prompt创建一个虚拟环境,我的叫yolov8, python版本用3.10 源码地址:GitHub - ul

CV在读 25万+

分数计算器(C++课设)

需求概述 (1)设计一个分数计算器,进行分数的算术运算和逻辑运算。 (2)能够像使用基本数据的对象一样,对分数进行“+”、“-”、“*”和“/”等算术运算和比较两个分数的大小。 (3)以a/b的形式输入输出分数,允许输入输出整数这种特殊形式。 (4)对不是约化型的分数进行约化,避免分母为负数。 (5)如果分数的分母为0、除数为0或输入时格式有错,采用异常处理机制解决。 输入 以分数的形式输入。(如1/2) 若分母为0会抛出异常,重新输入。 菜单页面 RationalNumber.h(头文件) #ifnd

sadnessss的博客 8769

Java经典框架之Spring MVC

在Web开发中,Controller全部在SpringMVC中扫描,除了Controller之外的Bean,全部在Spring容器中扫描(Service、Dao),按这种方式扫描,扫描完完成后,Controller可以访问到Service。最早的校验,就是服务端校验。能够获取到Dao中返回的信息,那就说明访问到来Controller中的方法,说明Spring MVC没有问题,同时Controller可以获取Service对象,Service可以获取Dao中的对象,那说明Spring的IoC容器也是OK的!

m0_52514893的博客 1931

低代码部署与管理——OpenClaw智能助手的应用部署与运维(2026技术版)

OpenClaw智能助手的低代码部署与管理平台采用分层架构设计,包含部署工具、环境管理、版本控制等核心模块,支持从开发到生产的全流程自动化部署。该系统通过Docker、Kubernetes等技术实现应用构建和部署,利用Terraform等工具管理多环境配置,并提供完善的监控运维能力。平台针对开发、测试、预生产和生产环境提供差异化配置,确保部署效率和运行可靠性。这种架构设计遵循自动化、可扩展性和安全性原则,显著提升了智能助手应用的部署效率和运维质量。

一键难忘的博客 314

Spring Boot Spring MVC

Spring MVC 是一个基于模型-视图-控制器(MVC)模式的 Web 框架,提供了一整套处理 HTTP 请求的工具,包括控制器(Controller)、视图解析(View Resolver)和模型绑定(Model Binding)。

Flying_Fish_roe的博客 1994

第21章—技术管理篇(上):身为技术人该怎样带好团队并做好管理者

上节讲了职业规划和学习提升这两个话题,随着职业规划的不断落地,或者自己能力的不断提升,大家也会逐渐被提拔成“职级更高”的人。企业规模扩张时,员工数量也会变多,意味着Boss需要更多的人来辅助管理,而管理者会从外部招聘吗?也许会,但大多企业更喜欢从内部选拔,毕竟人的天性更希望找的人值得信赖。此时,一些能力不错、做事靠谱的老员工,就会被“赶上”管理者的位子。作管理不难,但想要“”就需要一定情商。

运维老生常谈 1365

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Spring 和 Spring MVC经典面试题及答案

关于Spring 和 Spring MVC的43个问题【问题汇总】   1.为什么使用Spring ? 1). 方便解耦,简化开发          通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。     2). AOP编程的支持          通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测...

林逗哥 4万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring MVC 全面解析

**Spring MVC** 是 Spring 框架中的一个模块,它基于 MVC(Model-View-Controller)设计模式,旨在帮助开发者构建灵活、松耦合的 Web 应用。主要目的是简化传统 Servlet+JSP 模式下的 Web 开发方式。

技术让我们连接在一起 2027

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Spring MVC

jsp 其实也是一个 Servlet,它会由容器解析成一个 Servlet,所以,使用 Model 设置的参数最终会被映射到 request 域中,jsp 从 request 中拿到要解析的值。,第一个参数传入一个 sql 语句,后面一个参数是一个函数式接口,用于将查询结果映射到 Java 类中,rs 是查询结果,rowNum 是查询的行数。<input type="button" id="queryBtn" value="查询">

hanjie13141516的博客 1474

【Spring】Spring MVC入门(一)

在前面,我们了解了什么是Spring,那么本篇我们就来认识一种在网站开发中常用的框架———Spring Web MVC。我们来看下官方的解释:Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring框架中。它的正式名称为”Spring Web MVC”来自于其源模块的名称(Spring-webmvc),但通常被称为“Spring MVC”。

zhyhgx的博客 1750

小结:Spring MVC 的 XML 的经典配置方式

方式配置方式特点XMLbean 的 id 就是 URLXML更灵活,支持多个 URL 到 bean 的映射注解+ ``XML + 注解更现代,更简洁,推荐使用。

weixin_44719499的博客 1415
上一篇: Spring REST 的异常处理机制
下一篇: Vue开发中出现对话框被遮罩层挡住问题解决方案
java_augur
博客等级 码龄22年 67粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值