SSM框架学习笔记

SSM框架笔记

本文对SSM(Spring+SpringMVC+MyBatis)全套核心知识点进行深度内容解析,聚焦框架底层原理、核心组件功能、配置规范、语法细节与实战场景,完整覆盖零基础入门必备核心内容,可作为Java企业级SSM开发的系统性学习与复盘手册。

一、SSM整体架构核心解析

SSM是Java企业级开发主流的轻量级整合框架组合,三者各司其职、协同完成完整Web项目的开发架构,严格对应软件开发经典的三层架构,是企业项目开发的标准技术选型。其中各框架的层级分工明确,不存在功能重叠,架构耦合度极低。

三层架构具体实现规范:表现层(Web层)由SpringMVC负责,承接前端请求、参数接收、视图响应;业务层由Spring负责,管理业务逻辑、事务控制、组件依赖解耦;持久层由MyBatis负责,专注数据库交互、SQL执行、数据映射封装

SSM框架的核心优势体现在三方面:一是架构分层清晰,代码可读性、可维护性极强;二是主打注解驱动开发,大幅简化XML配置,提升开发效率;三是社区生态成熟、稳定性高,适配互联网、金融、电商等各类企业场景,阿里、京东、各大银行的核心业务系统均广泛使用该技术栈。

SSM项目开发的基础运行环境必须提前适配,核心依赖包含JDK、IDEA开发工具、Maven项目管理工具、MySQL数据库、Tomcat服务器。零基础搭建环境需重点完成JDK安装与系统环境变量配置,通过java、javac命令验证环境有效性,同时掌握IDEA中Maven基础项目的创建方式,为后续框架学习与项目开发奠定基础。

二、MyBatis框架核心深度解析

2.1 MyBatis核心定位与技术优势

MyBatis是一款轻量化、高性能的Java持久层框架,核心解决传统JDBC开发的各类痛点。原生JDBC存在SQL语句硬编码、数据库连接手动创建与关闭、无自动对象映射、复杂查询适配困难、代码冗余量大等问题。相较于Hibernate全自动ORM框架、Struts2旧版Web框架,MyBatis兼具灵活性与便捷性,支持开发者自主编写SQL,同时实现结果集自动封装,适配复杂数据库查询场景。

MyBatis的标准工作执行流程为固定链路,是所有开发的底层基础:加载全局核心配置文件 → 构建全局唯一的SqlSessionFactory工厂对象 → 创建线程独立的SqlSession会话对象 → 调用对应方法执行自定义SQL语句 → 自动完成数据库结果集与Java实体对象的映射封装 → 关闭会话释放资源。

基础入门开发需遵循固定工程流程,通过Maven项目引入依赖后,依次完成数据库配置文件、MyBatis核心配置文件、实体类、SQL映射文件的编写,最终通过Junit单元测试验证数据库操作功能,完整跑通持久层交互逻辑。

2.2 MyBatis核心对象与配置文件解析

MyBatis三大核心对象具备严格的生命周期与使用规范,是规避开发BUG的关键:SqlSessionFactoryBuilder为工具类,仅用于构建工厂对象,用完即销毁;SqlSessionFactory是全局单例对象,整个项目中只需创建一次;SqlSession为数据库会话对象,线程不安全,需做到单次请求单次创建、使用完毕立即关闭,禁止全局共享。

MyBatis核心配置文件mybatis-config.xml存在严格的标签固定加载顺序,顺序错误会导致项目启动报错。核心配置标签功能解析:properties标签用于外部引入db.properties数据库配置文件,实现配置解耦;settings标签用于全局参数配置,包含二级缓存、延迟加载等高级特性;typeAliases标签用于给实体类定义别名,简化映射文件中的类名书写;environments标签支持配置多套数据库环境,可快速切换开发、测试、生产环境;mappers标签用于加载所有的SQL映射文件。

SQL映射文件是MyBatis执行数据库操作的核心文件,基础增删改查对应select、insert、update、delete四大标签。其中resultMap是核心高级标签,专门解决数据库表字段名与Java实体类属性名不一致的映射失效问题,可自定义字段与属性的对应关系。实际开发中推荐使用包扫描方式批量加载映射器,替代单文件引入方式,大幅简化配置。

2.3 动态SQL语法深度解析

动态SQL是MyBatis的核心精髓,支持程序运行时根据传入参数动态拼接SQL语句,完美适配多条件模糊查询、动态字段更新、批量数据操作等复杂业务场景,彻底解决静态SQL适配性差、代码冗余的问题。框架提供六大核心动态标签,各标签语法特性与适用场景差异显著:

if标签为基础单条件判断,支持多条件叠加生效,开发中常搭配where 1=1兜底,避免无有效条件时出现SQL语法报错;choose-when-otherwise为互斥多条件选择,逻辑等同于Java switch-case结构,仅执行第一个满足条件的分支,不会叠加生效;where标签可智能剔除条件前缀多余的and、or关键字,简化多条件拼接逻辑,是动态查询的首选标签;trim标签是where、set标签的底层实现,灵活性更高,可自定义前缀、后缀截取规则,适配特殊SQL拼接场景;set标签专门用于动态更新操作,自动剔除语句末尾多余逗号,解决动态更新字段不全导致的语法错误;foreach标签支持遍历数组、List、Map集合,核心用于批量查询、批量新增、批量删除等业务。

核心语法区别重点:if标签支持多条件叠加匹配,适用于多条件并行筛选场景;when标签为互斥匹配,仅生效首个满足条件,适用于多条件唯一筛选场景。所有动态标签均配套实战业务案例,覆盖客户多条件查询、用户信息动态更新、批量ID查询等高频场景。

2.4 数据库关联映射解析

针对数据库表之间的一对一、一对多、多对多三大关联关系,MyBatis提供专属标签实现数据表关联与Java实体关联的映射绑定,支撑联表查询业务开发。三种关联关系的业务场景:学生与校园卡为一对一绑定关系、班级与学生为典型一对多包含关系、学生与教师为双向多对多关联关系。

一对一关联映射支持两种主流实现方案:第一种为嵌套查询,通过select属性调用独立的子SQL语句,分步查询关联数据,逻辑清晰但存在多次数据库查询;第二种为嵌套结果查询,通过联表查询一次性获取所有数据,依靠resultMap嵌套映射完成数据封装,查询效率更高。官方以「人-身份证」案例完整演示两种方案的代码实现。

一对多关联映射核心使用collection标签实现,以「用户-订单」业务场景为例,一个用户对应多个订单,通过collection标签嵌套映射可将多条订单数据封装为用户实体的集合属性。该模块配套实战作业,要求自主实现一对多查询,自定义方法名与实体属性名,通过实操掌握复杂关联查询的开发逻辑。

三、Spring框架核心深度解析

3.1 Spring核心思想与入门原理

Spring是Java EE一站式轻量级框架,核心架构基于两大核心思想:IoC(控制反转)与AOP(面向切面编程),核心价值是降低项目耦合度、简化业务代码、实现功能解耦与复用。相较于传统分层开发,Spring可完美实现业务层与持久层的解耦,适配各类复杂企业业务。

IoC控制反转是Spring的核心底层原理,彻底颠覆传统对象创建方式:传统开发中,程序主动通过new关键字创建对象,对象控制权由代码本身掌控;IoC将对象的创建、初始化、销毁、依赖管理的控制权反转交给Spring容器,由容器统一管理所有业务对象(Bean)。

DI(依赖注入)是IoC思想的具体实现方式,Spring支持两种主流注入方式:构造方法注入,通过constructor-arg标签实现,适用于必填依赖注入;setter属性注入,通过property标签实现,是日常开发最常用的注入方式。通过员工登录验证案例可完整实现Service层注入Dao层,串联完整业务分层调用逻辑。

3.2 Spring Bean全维度管理解析

Bean是Spring容器管理的所有Java对象的统称,Spring提供多种实例化方式、作用域配置与生命周期管理机制,适配不同业务需求。Bean的三种实例化方式:构造方法实例化为默认方式,要求类提供无参构造方法,适配绝大多数场景;静态工厂实例化通过自定义工厂类的静态方法创建Bean,适配统一工具类对象创建场景;实例工厂实例化需先注册工厂Bean,再通过工厂Bean调用方法创建实例,适配复杂对象创建场景。

Bean核心作用域分为两种:singleton为默认作用域,容器启动时实例化单例对象,全局唯一,节省内存资源;prototype为多例作用域,每次从容器中获取Bean都会创建全新实例,适用于存在成员变量并发修改的场景。

Bean拥有完整生命周期,支持自定义初始化与销毁方法:初始化可通过@PostConstruct注解或配置init-method实现,用于对象创建后的资源初始化;销毁可通过@PreDestroy注解或destroy-method实现,用于容器关闭前的资源释放。同时需区分两大容器核心类:BeanFactory为延迟加载,仅在获取Bean时实例化,节省启动资源;ApplicationContext为即时加载,容器启动时完成所有单例Bean实例化,开发中主流使用。

3.3 Spring AOP核心原理与实战解析

AOP(面向切面编程)核心思想是横切逻辑解耦,将日志记录、事务控制、权限校验、性能监控等通用公共逻辑,从核心业务逻辑中抽离,在不修改业务源码的前提下实现功能增强,极大提升代码复用性与可维护性。

AOP五大核心术语是理解底层执行逻辑的基础:切面(Aspect)是封装所有横切逻辑的类;连接点(Joinpoint)是所有可被增强的业务方法;切入点(Pointcut)是通过表达式筛选出的、需要实际增强的目标方法;通知(Advice)是切面中具体执行的增强逻辑;织入(Weaving)是将切面逻辑绑定到目标方法的过程。

基于XML的AOP配置是经典实现方式,通过aop:config开启切面配置,aop:aspect绑定切面类,aop:pointcut通过execution表达式定义切入点规则。框架提供五种通知类型,覆盖全场景增强需求:前置通知在目标方法执行前触发,用于参数校验、日志前置记录;返回后通知在方法正常执行完毕触发,用于结果日志记录;异常通知在方法抛出异常时触发,用于异常捕获、报错日志记录;最终通知无论方法执行成功或失败都会触发,用于资源释放;环绕通知可完全包裹目标方法,自主控制方法执行、前后逻辑与异常处理,功能最全面。

通过UserDao增删改查案例可完整实现AOP日志增强,同时综合实战作业要求整合MyBatis+Spring+AOP,实现员工表CRUD功能并添加全局日志切面,真正实现技术整合落地。

四、SpringMVC框架核心深度解析

4.1 SpringMVC架构与执行流程解析

SpringMVC是Spring生态专属的Web层框架,基于MVC设计模式开发,核心职责是处理前端浏览器的所有请求、完成参数解析、调用业务逻辑、封装响应数据、渲染视图,是SSM架构中对接前后端的核心组件。

SpringMVC拥有固定的请求响应执行链路,所有Web请求统一经过前端控制器DispatcherServlet调度,标准流程:客户端发起请求 → DispatcherServlet统一拦截接收 → HandlerMapping根据请求URL匹配对应处理器 → HandlerAdapter执行目标Controller方法 → 方法返回ModelAndView(数据+视图信息) → ViewResolver视图解析器解析视图路径 → 服务器渲染页面并响应客户端。其中处理器映射器、处理器适配器、视图解析器是SpringMVC三大核心内置组件,各司其职完成请求全流程处理。

4.2 核心配置与注解语法解析

SpringMVC基础工程搭建需完成固定配置:基于Maven webapp模板创建Web项目,在web.xml中注册DispatcherServlet,关联SpringMVC核心配置文件;在spring-mvc.xml中开启包扫描、配置视图解析器的前缀与后缀,简化视图路径书写。

@RequestMapping是核心请求映射注解,支持标注在类上和方法上,作用不同:类上注解用于定义模块统一请求路径,方法上注解用于定义具体接口请求路径,两者拼接为完整访问地址。该注解支持value、params等属性配置,可精准匹配请求地址与请求参数,实现接口精准拦截。

框架支持Ant风格URL通配符映射,适配批量接口匹配场景:?匹配单个任意字符、*匹配单层任意路径、**匹配多层任意路径,可简化批量接口的映射配置。掌握以上核心配置与语法,可独立搭建完整可用的SpringMVC Web项目,完成SSM三大框架的完整基础能力搭建。

相关推荐
李白你好1 小时前
页面资产梳理 · 技术指纹识别 · Spring 端点探测
java·后端·spring
一起逃去看海吧1 小时前
dify-03
java·linux·开发语言
我是一颗柠檬1 小时前
【Java后端技术亮点】热Key探测与本地缓存二级防护:Redis热点问题的终极解决方案
java·redis·后端·缓存·中间件
Refrain_zc2 小时前
Android 音视频通话核心 —— 音频编码(AAC)完整解析
java
xiaoshuaishuai82 小时前
C# AvaloniaUI 资源找不到报错
java·服务器·前端·windows·c#
Xin_ye100862 小时前
C# 零基础到精通教程 - 第十八章:部署与发布——让应用上线
开发语言·c#
我是唐青枫2 小时前
Java JdbcTemplate 实战指南:用 Spring 轻量完成数据库增删改查
java·数据库·spring
思麟呀3 小时前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows
梓䈑3 小时前
【MySQL】MySQL安装 和 配置
数据库·mysql