当前位置: 首页 > ops >正文

Spring、Spring MVC、MyBatis 和 Spring Boot的关系

Spring、Spring MVC、MyBatis 和 Spring Boot的关系

首先辨析SSM中,两个S代表什么,是SpingSpringMvc
Spring的功能,可以概括为五大核心模块SpringMVC是其中的第四大核心模块,也就是Spring Web(Web 开发)模块,也就是说SpringMVC是spring的一个模块。

Spring核心模块:

(1) Spring Core(核心容器)

实现Spring的两大核心功能:控制反转和依赖注入

模块功能
spring-core提供 IoC(控制反转)和 DI(依赖注入)基础
spring-beans管理 Bean 的生命周期(如 @Component、@Bean)
除了这两种,还有其他模块功能
关键注解:

@Component(通用组件)
@Service(业务层)
@Repository(数据访问层)
@Autowired(依赖注入)
@Configuration + @Bean(Java 配置类)

(2) Spring AOP(面向切面编程)
模块功能
spring-aop提供 AOP 支持(如日志、事务管理)
spring-aspects集成 AspectJ(更强大的 AOP 功能)

关键注解:
@Aspect(定义切面)
@Before / @After / @Around(增强方法)
@Transactional(声明式事务)

(3) Spring Data Access(数据访问)
模块功能
spring-jdbc简化 JDBC 操作(如 JdbcTemplate)
spring-tx事务管理(如 @Transactional)

关键注解:
@Transactional(事务管理)
@Repository(数据访问层)

(4) Spring Web(Web 开发)

此处就是我们平时说的SpringMVC

模块功能
spring-web基础 Web 功能(如 HttpMessageConverter)
spring-webmvcSpring MVC 框架(@Controller、@GetMapping)
spring-websocketWebSocket 支持

关键注解:
@Controller / @RestController
@RequestMapping / @GetMapping / @PostMapping
@RequestBody / @ResponseBody

(5) Spring Test(测试支持)
模块功能
spring-test集成测试(如 @SpringBootTest)

关键注解:
@SpringBootTest(启动完整 Spring 上下文)
@MockBean(模拟依赖)

总结:
什么属于SpringMVC?
什么属于SpringMVC之外的部分?
以一个完整项目为例,
一个完整的Springboot整合的ssm项目中,可以把view层(也就是前端页面那些),controller层的各种@xxxMapping、@Controller ,以及model(也就是数据模型)层,认为是SpringMVC
而在service层,dao层写的各种@Component以及他的变种(比如@Service(业务层)
@Repository(数据访问层)),还有使用的依赖注入的 @Autowired这些使用的地方就可以说是属于Sping,因为这些是实现的spring的核心功能。

接下来,辨析,SpringBoot和SSM的关系
实际开发历程中,SSM三项是一个完整项目的结构,在Springboot出现之前,一个SSM项目resources需要以下配置,很多xml文件,非常繁琐
在这里插入图片描述
springboot出现后,讲配置文件整合,只需少量properties/yml配置文件,如下图
在这里插入图片描述
其他区别
在这里插入图片描述
springboot其实对于业务逻辑方面,没有对于ssm的过多优化,更多的是在项目配置上进行集成,方便开发者开发。

http://www.xdnf.cn/news/17197.html

相关文章:

  • 防火墙环境下的全网服务器数据自动化备份平台搭建:基于 rsync 的完整实施指南
  • 板块三章节3——NFS 服务器
  • 秋招笔记-8.7
  • Redis面试精讲 Day 13:Redis Cluster集群设计与原理
  • 解决 Nginx 反代中 proxy_ssl_name 环境变量失效问题:网页能打开但登录失败
  • Vue3获取当前页面相对路径
  • SMT工具实践:Moses工具的配置和小语种平行语料训练统计翻译模型完整实现
  • 六类注定烂尾的甲方软件外包必看!这类甲方不要理-优雅草卓伊凡
  • 【Docker】Redis基础命令在Docker中的使用
  • 试用一个用v语言编写的单文件数据库vsql
  • 计算机视觉--opencv(代码详细教程)
  • 投资股票心态
  • Swift 实战:高效设计 Tic-Tac-Toe 游戏逻辑(LeetCode 348)
  • 微算法科技(NASDAQ:MLGO)利用集成学习方法,实现更低成本、更稳健的区块链虚拟货币交易价格预测
  • 软件运行时 ffmpeg.dll 丢失怎么办?从原因排查到完美修复的完整方案
  • 开源大模型实战:GPT-OSS本地部署与全面测评
  • [失败记录] 使用HBuilderX创建的uniapp vue3项目添加tailwindcss3的完整过程
  • 前端三大核心要素以及前后端通讯
  • VBA之Word应用第四章第一节:段落集合Paragraphs对象(一)
  • 告别复杂配置!cpolar让Prometheus监控突破网络限制
  • 在新建word中使用以前文件中的列表样式
  • 使用nvm管理多个node版本(附安装教程)
  • Mac+Chrome滚动截图
  • windows内核研究(内存管理-线性地址的管理)
  • 前端百分比展示导致后端 BigDecimal 转换异常的排查与解决
  • 【数据库】如何从本地电脑连接服务器上的MySQL数据库?
  • 第二集 测试概念
  • 3a服务器的基本功能1之身份认证
  • 【ee类保研面试】数学类---概率论
  • 嵌入式硬件学习(十一)—— platform驱动框架