这门课解决的不是"SSM 是什么"这种概念问题,而是一个更实际的场景:你手上有一个能跑的 Spring + SpringMVC + MyBatis 项目,但配置靠复制、报错靠试、需求一变就改得心虚。课程把"AI 工具链"放在第 2 节就讲,说明它不打算让你先背完一堆注解再谈效率,而是从一开始就把查文档、读异常、生成模板这些动作交给工具,你负责判断和验证。

先判断值不值得学:你处在哪个阶段

如果完全没有 Java Web 基础,或者连 Servlet、HTTP 请求响应、Maven 依赖这些概念都没碰过,这门课不是合适的起点——它默认你能看懂一个已有的工程结构,只是理解得不深、写得不够稳。相反,如果你已经用过 SSM 做过练习项目,但说不清 IoC 容器到底在什么时候装配对象、事务为什么没生效、MyBatis 的映射是怎么和接口对上的,那这门课正好卡在这个缺口上。

判断方法很简单:打开你之前写的项目,试着不看笔记从零补一遍 Spring 的核心配置。如果卡在"为什么加了注解还要开扫描"这一步,继续往下看;如果能顺畅讲清整个链路,这门课对你可能偏基础。

它讲什么:容器、Web 层、持久层三条线

Spring 部分占了相当的篇幅,从容器和组件的基本概念切入,把 IoC 和 DI 拆开讲清楚,再落到具体的注册方式上——用配置类声明组件、用扫描批量装配、用条件判断控制装配时机,这些不是零散的知识点,而是同一件事的不同做法。理解这一层之后,SpringMVC 的请求映射、参数绑定、返回值处理就不再是"照着写就行",你能看出它在容器里的位置。

持久层这条线围绕 MyBatis 展开,重点在于接口与映射的对应关系、参数传递的规则、结果集的处理。SSM 真正难的地方往往不是单个框架,而是三层之间怎么串——事务加在哪一层、异常怎么往上抛、返回给前端的数据从哪来。课程用实战串起这三条线,而不是把它们当三门独立的课来讲。

AI 工具链具体用在哪

这是这门课区别于老版本 SSM 教程的地方,但要理解得克制一些:AI 不会替你设计架构,也不会替你把业务逻辑写对。它的实际用途集中在几个环节——读一段看不懂的异常堆栈、解释某个注解的生效条件、把重复的样板代码生成出来、在你写完之后帮你找出可能的空指针或事务边界问题。第 2 节专门做工具链预备,意味着后面的内容会持续用到它,而不是只在开头演示一次。

需要注意的是,工具用得好不好,取决于你能不能判断它给的答案对不对。这也是为什么课程没有把它放在最前面当卖点,而是先讲容器和组件,让你有基本的判断依据。

资料怎么用:别顺着序号一路看

视频按知识点切分,单节时长不长,适合按需回看。建议的用法是:先通看一遍和容器、事务、映射相关的部分,建立整体印象;然后回到自己的项目里,把不放心的地方对着视频重做一遍,重点观察配置的差别带来的行为变化。AI 工具链那部分可以放在动手阶段用,边写边问,比单纯看演示更容易记住。

如果你已经有能运行的 SSM 项目,最高效的方式不是从头看视频,而是拿它当排查手册——遇到具体问题再定位到对应章节。这门课的价值不在于让你"学完"SSM,而在于让你下次遇到相关问题时,知道该从哪里找原因。

课程目录

├──视频 | ├──001.AI版SSM教程简介.mp4
 32.95M | ├──002.预备 – AI工具链.mp4
 74.43M | ├──003.Spring – 介绍.mp4
 72.93M | ├──004.Spring – 容器和组件.mp4
 23.97M | ├──005.Spring – Ioc和DI.mp4
 31.07M | ├──006.容器 – 注册 – 实验1:@Bean – 把组件放到容器.mp4
 61.64M | ├──007.容器 – 注册 – 补充 – Maven配置问题.mp4
 316.90M | ├──008、容器 – 注册 – 补充 – maven 聚合配置.mp4
 7.16M | ├──009、容器 – 注册 – 实验2:从容器中获取组件 – 按照名字、类型.mp4
 88.95M | ├──010、容器 – 注册 – 实验2:组件创建时机和单例特性.mp4
 34.20M | ├──011、容器 – 注册 – 实验3:@Configuration – 配置类.mp4
 42.06M | ├──012、容器 – 注册 – 实验4-7:@Controller、@Service、@Repository、@Component – mvc分层注解.mp4
 27.71M | ├──013、容器 – 注册 – 实验8:@ComponentScan – 批量扫描.mp4
 27.49M | ├──014、容器 – 注册 – 实验9:@Import – 导入第三方组件.mp4
 40.15M | ├──015、容器 – 注册 – 补充 – 分层注解底层都是 @Component.mp4
 3.20M | ├──016、容器 – 注册 – 实验10:@Scope – 调整组件作用域.mp4
 38.71M | ├──017、容器 – 注册 – 实验11:@Lazy – 单例情况下的懒加载.mp4
 18.04M | ├──018、容器 – 注册 – 实验12:FactoryBean – 利用工厂制造复杂Bean.mp4
 53.81M | ├──019、容器 – 注册 – 实验13:@Conditional – 条件注册 .mp4
 79.71M | ├──020、容器 – 注册 – 实验13:@Conditional 派生注解.mp4
 54.72M | ├──021、容器 – 注册 – 实验13:@ConditionalOnMissingBean 的判定bug.mp4
 21.08M | ├──022、容器 – 注入 – 实验1:@Autowired .mp4
 70.70M | ├──023、容器 – 注入 – 实验2-3:@Qualifier 和 @Primary.mp4
 36.97M | ├──024、容器 – 注入 – 实验4:@Resource 也是自动注入.mp4
 42.18M | ├──025、容器 – 注入 – 实验6:构造器注入.mp4
 21.78M | ├──026、容器 – 注入 – 实验5:setter方法注入.mp4
 22.64M | ├──027、容器 – 注入 – 实验7:xxxAware 感知接口.mp4
 32.54M | ├──028、容器 – 注入 – 实验8:@Value 给属性赋值.mp4
 82.88M | ├──029、容器 – 注入 – 实验9:@PropertySource.mp4
 39.08M | ├──030、容器 – 注入 – 实验9:细节,类路径找资源的写法.mp4
 17.75M | ├──031、容器 – 注入 – ResourceUtils – 获取资源.mp4
 37.04M | ├──032、容器 – 注入 – @Profile – 多环境.mp4
 81.97M | ├──033、源码 – 原生方式使用容器 – ClassPathXmlApplicationContext.mp4
 79.28M | ├──034、容器 – 生命周期 – 实验1 – @Bean 指定生命周期初始化和销毁方法.mp4
 72.43M | ├──035、容器 -生命周期 – 实验2-3 – InitializingBean、DisposableBean.mp4
 38.63M | ├──036、容器 – 生命周期 – 实验4-5:@PreDestroy、@PostConstruct.mp4
 21.53M | ├──037、容器 – 生命周期 – 实验6:BeanPostProcessor.mp4
 110.61M | ├──038、容器 – 生命周期 – BeanPostProcessor能做什么.mp4
 69.40M | ├──039、容器篇 – 结束.mp4
 20.77M | ├──040、单元测试新用法.mp4
 19.48M | ├──041、AOP – 日志 – 硬编码与静态代理.mp4
 110.68M | ├──042、AOP – 日志 – 动态代理.mp4
 119.53M | ├──043、AOP – 日志 – 动态代理 – 加日志.mp4
 44.25M | ├──044、AOP – 日志 – 动态代理必须有接口.mp4
 9.20M | ├──045、AOP – 日志 – 日志工具类.mp4
 32.81M | ├──046、AOP – 专业术语.mp4
 39.27M | ├──047、AOP – 切面 – 编写切面和通知方法实现 AOP.mp4
 80.25M | ├──048、AOP – 细节 – 切入点 表达式通配符.mp4
 29.15M | ├──049、AOP – 细节 – 切入点表达式的其他写法.mp4
 90.19M | ├──050、AOP – 细节 – 组件在容器中其实是代理对象.mp4
 33.97M | ├──051、AOP – 细节 – 通知方法执行流程.mp4
 23.64M | ├──052、AOP – 细节 – JoinPoint 连接点信息.mp4
 85.03M | ├──053、AOP – 细节 – @Pointcut 抽取切入点表达式.mp4
 19.38M | ├──054、AOP – 细节 – 多切面执行顺序.mp4
 63.61M | ├──055、作业 – 处理.mp4
 24.81M | ├──056、【源码】 – BeanFactory 里面的核心集合.mp4
 121.21M | ├──057、【源码】- Spring 容器 底层就是三个Map,三级缓存机制.mp4
 182.58M | ├──058、AOP – 环绕通知 – 拦截器目标方法执行,执行前后进行修改.mp4
 57.75M | ├──059、AOP – 环绕通知 – 建议一定抛出异常,方便多切面情况下异常感知链路是通的.mp4
 37.58M | ├──060、AOP – 总结:应用场景.mp4
 52.64M | ├──061、事务 – 环境搭建 – 创建数据库、创建项目.mp4
 44.71M | ├──062、事务 – 环境搭建 – 整合数据源和JdbcTemplate.mp4
 21.44M | ├──063、事务 – 实验1:按照id查询图书(JdbcTemplate).mp4
 53.75M | ├──064、事务 – 实验2:添加图书.mp4
 12.30M | ├──065、事务 – 实验3:按照id修改图书库存.mp4
 13.09M | ├──066、事务 – 实验4:按照id删除图书.mp4
 8.12M | ├──067、事务 – 实验5:按照username扣减账户余额.mp4
 18.81M | ├──068、事务 – 实验6:结账操作.mp4
 30.60M | ├──069、事务 – @Transactional – 声明式事务搞定.mp4
 16.53M | ├──070、事务 – 细节 – 事务管理器的原理.mp4
 91.11M | ├──071、事务 – 细节 – timeout – 超时控制.mp4
 35.35M | ├──072、事务 – 细节 – readOnly – 只读优化.mp4
 10.75M | ├──073、事务 -细节 – rollbackFor – 指定哪些异常需要回滚.mp4
 55.93M | ├──074、事务 – 细节 – noRollbackFor – 指定哪些异常不需要回滚.mp4
 20.48M | ├──075、事务 – 细节 – 隔离级别 – READ_UNCOMMITTED 读未提交.mp4
 58.59M | ├──076、事务 – 细节 – 隔离级别 – READ_COMMITTED – 读已提交.mp4
 23.77M | ├──077、事务 – 细节 – 隔离级别 – REPEATABLE_READ – 可重复读.mp4
 28.53M | ├──078、事务 – 细节 – 传播行为 – propagation.mp4
 123.87M | ├──079、事务 – 细节 – 传播行为 – 分析一个复杂案例.mp4
 47.08M | ├──080、事务 – 细节 – 传播行为 – 属性传播.mp4
 30.22M | ├──081、Spring – 总结.mp4
 15.65M | ├──082、【源码】- 双检查锁机制.mp4
 41.39M | ├──083、【源码】- IoC容器启动12大步.mp4
 386.17M | ├──084、SpringMVC – web开发实际就是请求响应.mp4
 78.25M | ├──085、SpringMVC – helloworld.mp4
 28.45M | ├──086、SpringMVC – 小问题.mp4
 11.75M | ├──087、@RequestMapping – 路径映射 – 通配符.mp4
 59.49M | ├──088.@RequestMapping – 请求限定.mp4
 1.96G | ├──089.请求限定小结.mp4
 7.85M | ├──090.HTTP – 复习.mp4
 95.86M | ├──091.请求处理 – 实验1:使用普通变量,收集请求参数.mp4
 32.36M | ├──092.请求处理 – 实验2:@RequestParam – 明确指定获取哪个参数值.mp4
 27.80M | ├──093.请求处理 – 实验3:使用POJO匹配封装所有参数.mp4
 47.89M | ├──094.请求处理 – 实验4:@RequestHeader – 获取请求头.mp4
 19.23M | ├──095.请求处理 – 实验5:@CookieValue – 获取cookie的值.mp4
 17.72M | ├──096.请求处理 – 实验6:pojo级联封装复杂属性.mp4
 22.69M | ├──097.请求处理 – 实验7:@RequestBody 接受json字符串并进行自动转换为对象.mp4
 70.15M | ├──098.请求处理 – 实验8:文件上传.mp4
 73.46M | ├──099.请求处理 – 实验9:HttpEntity – 获取整个请求(包括体和头).mp4
 35.26M | ├──100.请求处理 -实验10:传入原生API.mp4
 12.19M | ├──101.请求处理 – 总结.mp4
 36.96M | ├──102.响应处理 – 实验1:返回json.mp4
 24.21M | ├──103.响应处理 – 实验2:文件下载.mp4
 75.77M | ├──104.响应处理 – thymeleaf – 页面跳转.mp4
 46.60M | ├──105.响应处理 – thymeleaf – 测试页面取值.mp4
 101.17M | ├──106.响应处理 – 总结.mp4
 8.29M | ├──107.RESTful – API 接口设计的架构风格.mp4
 71.31M | ├──108.RESTful – CRUD案例 – Dao层完成.mp4
 96.72M | ├──109.RESTful – CRUD案例 – Service层完成.mp4
 75.62M | ├──110.RESTful – CRUD案例 – Controller 层完成.mp4
 85.32M | ├──111.RESTful – CRUD案例 – 统一返回R对象.mp4
 53.41M | ├──112.RESTful – CRUD案例 – 查询所有.mp4
 29.32M | ├──113.RESTful – CRUD案例 – 跨域.mp4
 91.89M | ├──114.@PathVariable – 其他写法.mp4
 15.26M | ├──115.复制一个练习项目.mp4
 16.13M | ├──116.拦截器 – HandlerInterceptor – 拦截目标方法的执行.mp4
 88.21M | ├──117.拦截器 – 多拦截器执行顺序.mp4
 57.84M | ├──118.拦截器 – 执行顺序.mp4
 14.07M | ├──119.拦截器 – 拦截器和过滤器的区别.mp4
 32.41M | ├──120.异常处理 – @ExceptionHandler – 指定异常处理方法.mp4
 75.85M | ├──121.异常处理 – @ControllerAdvice – 全局异常处理.mp4
 68.15M | ├──122.异常处理 – 异常处理的最终方式.mp4
 111.00M | ├──123.数据校验 – JSR303校验注解、@Valid、BindingResult.mp4
 104.63M | ├──124.数据校验 – 全局异常处理.mp4
 45.98M | ├──125.数据校验 – 自定义校验器.mp4
 42.88M | ├──126.数据校验 – 错误消息提示.mp4
 66.31M | ├──127.各种O的分层模型.mp4
 64.64M | ├──128.最佳实践 – 项目中的vo用法.mp4
 62.58M | ├──129.最佳实践 – 接口文档.mp4
 135.95M | ├──130.SpringMVC – 结束.mp4
 55.23M | ├──131.【源码】- DispatcherServlet 九大组件.mp4
 77.73M | ├──132.【源码】- SpringMVC – DispatcherServlet 请求处理流程.mp4
 61.49M | ├──133.【源码】- SpringMVC – 源码流程.mp4
 285.90M | ├──134.MyBatis – HelloWorld.mp4
 88.98M | ├──135.MyBatis – 简介.mp4
 36.86M | ├──136.MyBatis – HelloWorld – 细节.mp4
 20.04M | ├──137.MyBatis – CRUD – 完成 – 开sql日志.mp4
 45.51M | ├──138.MyBatis – CRUD – 细节 – useGeneratedKeys 获取自增id.mp4
 16.38M | ├──139.MyBatis – CRUD – 查询所有 & 开启驼峰命名.mp4
 22.83M | ├──140.MyBatis – 参数处理 – #{}和${}.mp4
 91.36M | ├──141.MyBatis – 参数处理 – 单个参数 #{} 直接取值.mp4
 64.13M | ├──142.MyBatis – 参数处理 – 多个参数 @Param 注解标注每个参数的名字.mp4
 57.04M | ├──143.MyBatis – 返回值 – 普通、对象、List、Map.mp4
 80.37M | ├──144.MyBatis – 返回值 – ResultMap – 自定义结果集.mp4
 56.47M | ├──145.MyBatis – 关联查询 – 关联关系复习与环境搭建.mp4
 55.13M | ├──146.MyBatis – 关联查询 – ResultMap – association 指定一对一关联封装规则.mp4
 65.56M | ├──147.MyBatis – 关联查询 – ResultMap – collection 指定一对多关联封装规则.mp4
 68.57M | ├──148.MyBatis – 分步查询 – 原生分步写法.mp4
 51.88M | ├──149.MyBatis – 自动分步查询 – collection – select 属性指定需要启动的下一次查询.mp4
 82.43M | ├──150.MyBatis – 自动分步查询 – association – select 指定启动下一次查询.mp4
 55.64M | ├──151.MyBatis – 超级分步的大坑.mp4
 132.07M | ├──152.MyBatis – 分步查询 – 开启延迟加载.mp4
 51.23M | ├──153.MyBatis – 自定义结果集小结 – 1-1、1-N、N-N.mp4
 22.29M | ├──154.MyBatis – 动态SQL – if 标签.mp4
 51.84M | ├──155.MyBatis – 动态SQL – where标签.mp4
 26.94M | ├──156.MyBatis – 动态SQL – set标签.mp4
 44.32M | ├──157.MyBatis – 动态SQL – trim标签实现where.mp4
 38.99M | ├──158.MyBatis – 动态SQL – trim标签实现set.mp4
 12.72M | ├──159.MyBatis – 动态SQL – choose、when、otherwise分支选择.mp4
 19.91M | ├──160.动态sql-foreach批量操作.mp4
 2.63G | ├──161.MyBatis – 动态SQL – 批量sql数据库默认支持回滚.mp4
 25.46M | ├──162.MyBatis – 动态SQL – sql – 抽取可复用的片段.mp4
 28.46M | ├──163.MyBatis – XML中的转义字符.mp4
 7.67M | ├──164.MyBatis – 缓存机制 – 体验一级缓存.mp4
 127.08M | ├──165.MyBatis – 缓存机制 – 体验二级缓存.mp4
 49.54M | ├──166.MyBatis – 插件机制 – 知道有四大对象.mp4
 42.71M | ├──167.MyBatis – 分页插件 – 基础用法.mp4
 87.70M | ├──168.MyBatis – 分页插件 – 分页前后配合.mp4
 73.61M | ├──169.MyBatis – 逆向生成.mp4
 86.02M | ├──170.MyBatis – 最后的作业.mp4
 14.27M | ├──171.异常处理打印错误堆栈.mp4
 8.65M | ├──172.SpringBoot – 特性.mp4
 83.08M | ├──173.SpringBoot – 简化打包、部署、运维.mp4
 32.00M | ├──174.SpringBoot – 场景启动器.mp4
 70.31M | ├──175.SpringBoot – 依赖管理.mp4
 70.33M | ├──176.SpringBoot – 自动配置 – 基本理解.mp4
 154.15M | ├──177.SpringBoot – 自动配置 – 导入场景会导入一堆自动配置类,这些配置类导入基于条件注解一堆组件.mp4
 228.54M | ├──178.SpringBoot – 自动配置 – 自动配置类给容器中放组件、组件属性来自于属性类、属性类绑定配置文件.mp4
 139.54M | ├──179.SpringBoot – 自动配置 – 总结.mp4
 28.07M | ├──180.SpringBoot – 基础使用 – @ConfigurationProperties.mp4
 52.39M | ├──181.SpringBoot – 基础使用 – yaml语法.mp4
 88.13M | ├──182.SpringBoot – 基础使用 – banner设置.mp4
 18.91M | ├──183.SpringBoot – 基础使用 – 启动Spring应用的其他方式.mp4
 27.96M | ├──184.SpringBoot – 日志 – 简介.mp4
 87.86M | ├──185.SpringBoot – 日志 – 日志记录.mp4
 27.93M | ├──186.SpringBoot -日志 – 根据级别记录日志.mp4
 116.73M | ├──187.SpringBoot – 日志 – 日志分组.mp4
 18.16M | ├──188.SpringBoot – 日志 – 输出到文件.mp4
 43.07M | ├──189.SpringBoot – 日志 – 归档与切割.mp4
 65.55M | ├──190.SpringBoot – 日志 – 引入框架自己的日志配置文件.mp4
 39.71M | ├──191.SpringBoot – 日志 – 切换日志实现.mp4
 22.61M | ├──192.SpringBoot – 日志 – 总结.mp4
 6.85M | ├──193.SpringBoot – 进阶 – profiles 环境隔离.mp4
 75.66M | ├──194.SpringBoot – 进阶 – 外部化配置.mp4
 92.79M | ├──195.SpringBoot – 单元测试 – 断言机制.mp4
 74.60M | ├──196.SpringBoot – 可观测性 – actuator.mp4
 69.46M | ├──197.SpringBoot – 生命周期 – 监听器感知生命周期.mp4
 80.84M | ├──198.SpringBoot – 生命周期 – 事件驱动、异步.mp4
 102.46M | ├──199.SpringBoot – 原理总结.mp4
 59.30M | └──200.自定义starter及总结.mp4
 3.09G ├──代码.zip
 5.72M ├──课件.zip
 7.05M └──资料.zip
 249.76M 适合人群 SSM框架学习者 后端开发工程师 学习收获 掌握SSM框架 提升开发效率 了解AI在开发中的应用 祝您学习愉快! 学有所成,前程似锦! 课程目录 001.AI版SSM教程简介.mp4
 002.预备 - AI工具链.mp4
 003.Spring - 介绍.mp4
 004.Spring - 容器和组件.mp4
 005.Spring - IoC和DI.mp4
 006.容器 - 注册 - 实验1:@Bean - 把组件放到容器.mp4
 007.容器 - 注册 - 补充 - Maven配置问题.mp4
 008.容器 - 注册 - 补充 - Maven 聚合配置.mp4
 009.容器 - 注册 - 实验2:从容器中获取组件 - 按照名字.类型.mp4
 010.容器 - 注册 - 实验2:组件创建时机和单例特性.mp4
 011.容器 - 注册 - 实验3:@Configuration - 配置类.mp4
 012.容器 - 注册 - 实验4-7:@Controller.@Service.@Repository.@Component - MVC分层注解.mp4
 013.容器 - 注册 - 实验8:@ComponentScan - 批量扫描.mp4
 014.容器 - 注册 - 实验9:@Import - 导入第三方组件.mp4
 015.容器 - 注册 - 补充 - 分层注解底层都是 @Component.mp4
 016.容器 - 注册 - 实验10:@Scope - 调整组件作用域.mp4
 017.容器 - 注册 - 实验11:@Lazy - 单例情况下的懒加载.mp4
 018.容器 - 注册 - 实验12:FactoryBean - 利用工厂制造复杂Bean.mp4
 019.容器 - 注册 - 实验13:@Conditional - 条件注册.mp4
 020.容器 - 注册 - 实验13:@Conditional 派生注解.mp4
 021.容器 - 注册 - 实验13:@ConditionalOnMissingBean 的判定bug.mp4
 022.容器 - 注入 - 实验1:@Autowired.mp4
 023.容器 - 注入 - 实验2-3:@Qualifier 和 @Primary.mp4
 024.容器 - 注入 - 实验4:@Resource 也是自动注入.mp4
 025.容器 - 注入 - 实验6:构造器注入.mp4
 026.容器 - 注入 - 实验5:Setter方法注入.mp4
 027.容器 - 注入 - 实验7:xxxAware 感知接口.mp4
 028.容器 - 注入 - 实验8:@Value 给属性赋值.mp4
 029.容器 - 注入 - 实验9:@PropertySource.mp4
 030.容器 - 注入 - 实验9:细节,类路径找资源的写法.mp4
 031.容器 - 注入 - ResourceUtils - 获取资源.mp4
 032.容器 - 注入 - @Profile - 多环境.mp4
 033.源码 - 原生方式使用容器 - ClassPathXmlApplicationContext.mp4
 034.容器 - 生命周期 - 实验1 - @Bean 指定生命周期初始化和销毁方法.mp4
 035.容器 -生命周期 - 实验2-3 - InitializingBean.DisposableBean.mp4
 036.容器 - 生命周期 - 实验4-5:@PreDestroy.@PostConstruct.mp4
 037.容器 - 生命周期 - 实验6:BeanPostProcessor.mp4
 038.容器 - 生命周期 - BeanPostProcessor能做什么.mp4
 039.容器篇 - 结束.mp4
 040.单元测试新用法.mp4
 041.AOP - 日志 - 硬编码与静态代理.mp4
 042.AOP - 日志 - 动态代理.mp4
 043.AOP - 日志 - 动态代理 - 加日志.mp4
 044.AOP - 日志 - 动态代理必须有接口.mp4
 045.AOP - 日志 - 日志工具类.mp4
 046.AOP - 专业术语.mp4
 047.AOP - 切面 - 编写切面和通知方法实现 AOP.mp4
 048.AOP - 细节 - 切入点 表达式通配符.mp4
 049.AOP - 细节 - 切入点表达式的其他写法.mp4
 050.AOP - 细节 - 组件在容器中其实是代理对象.mp4
 051.AOP - 细节 - 通知方法执行流程.mp4
 052.AOP - 细节 - JoinPoint 连接点信息.mp4
 053.AOP - 细节 - @Pointcut 抽取切入点表达式.mp4
 054.AOP - 细节 - 多切面执行顺序.mp4
 055.作业 - 处理.mp4
 056.【源码】 - BeanFactory 里面的核心集合.mp4
 057.【源码】- Spring 容器 底层就是三个Map,三级缓存机制.mp4
 058.AOP - 环绕通知 - 拦截器目标方法执行,执行前后进行修改.mp4
 059.AOP - 环绕通知 - 建议一定抛出异常,方便多切面情况下异常感知链路是通的.mp4
 060.AOP - 总结:应用场景.mp4
 061.事务 - 环境搭建 - 创建数据库.创建项目.mp4
 062.事务 - 环境搭建 - 整合数据源和JdbcTemplate.mp4
 063.事务 - 实验1:按照id查询图书(JdbcTemplate).mp4
 064.事务 - 实验2:添加图书.mp4
 065.事务 - 实验3:按照id修改图书库存.mp4
 066.事务 - 实验4:按照id删除图书.mp4
 067.事务 - 实验5:按照username扣减账户余额.mp4
 068.事务 - 实验6:结账操作.mp4
 069.事务 - @Transactional - 声明式事务搞定.mp4
 070.事务 - 细节 - 事务管理器的原理.mp4
 071.事务 - 细节 - timeout - 超时控制.mp4
 072.事务 - 细节 - readOnly - 只读优化.mp4
 073.事务 -细节 - rollbackFor - 指定哪些异常需要回滚.mp4
 074.事务 - 细节 - noRollbackFor - 指定哪些异常不需要回滚.mp4
 075.事务 - 细节 - 隔离级别 - READ_UNCOMMITTED 读未提交.mp4
 076.事务 - 细节 - 隔离级别 - READ_COMMITTED - 读已提交.mp4
 077.事务 - 细节 - 隔离级别 - REPEATABLE_READ - 可重复读.mp4
 078.事务 - 细节 - 传播行为 - propagation.mp4
 079.事务 - 细节 - 传播行为 - 分析一个复杂案例.mp4
 080.事务 - 细节 - 传播行为 - 属性传播.mp4
 081.Spring - 总结.mp4
 082.【源码】- 双检查锁机制.mp4
 083.【源码】- IoC容器启动12大步.mp4
 084.SpringMVC - Web开发实际就是请求响应.mp4
 085.SpringMVC -Helloworld.mp4
 086.SpringMVC - 小问题.mp4
 087.@RequestMapping - 路径映射 - 通配符.mp4
 088.@RequestMapping - 请求限定.mp4
 089.请求限定小结.mp4
 090.HTTP - 复习.mp4
 091.请求处理 - 实验1:使用普通变量,收集请求参数.mp4
 092.请求处理 - 实验2:@RequestParam - 明确指定获取哪个参数值.mp4
 093.请求处理 - 实验3:使用POJO匹配封装所有参数.mp4
 094.请求处理 - 实验4:@RequestHeader - 获取请求头.mp4
 095.请求处理 - 实验5:@CookieValue - 获取cookie的值.mp4
 096.请求处理 - 实验6:pojo级联封装复杂属性.mp4
 097.请求处理 - 实验7:@RequestBody 接受json字符串并进行自动转换为对象.mp4
 098.请求处理 - 实验8:文件上传.mp4
 099.请求处理 - 实验9:HttpEntity - 获取整个请求(包括体和头).mp4
 100.请求处理 -实验10:传入原生API.mp4
 101.请求处理 - 总结.mp4
 102.响应处理 - 实验1:返回json.mp4
 103.响应处理 - 实验2:文件下载.mp4
 104.响应处理 - Thymeleaf - 页面跳转.mp4
 105.响应处理 - Thymeleaf - 测试页面取值.mp4
 106.响应处理 - 总结.mp4
 107.RESTful - API 接口设计的架构风格.mp4
 108.RESTful - CRUD案例 - Dao层完成.mp4
 109.RESTful - CRUD案例 - Service层完成.mp4
 110.RESTful - CRUD案例 - Controller 层完成.mp4
 111.RESTful - CRUD案例 - 统一返回R对象.mp4
 112.RESTful - CRUD案例 - 查询所有.mp4
 113.RESTful - CRUD案例 - 跨域.mp4
 114.@PathVariable - 其他写法.mp4
 115.复制一个练习项目.mp4
 116.拦截器 - HandlerInterceptor - 拦截目标方法的执行.mp4
 117.拦截器 - 多拦截器执行顺序.mp4
 118.拦截器 - 执行顺序.mp4
 119.拦截器 - 拦截器和过滤器的区别.mp4
 120.异常处理 - @ExceptionHandler - 指定异常处理方法.mp4
 121.异常处理 - @ControllerAdvice - 全局异常处理.mp4
 122.异常处理 - 异常处理的最终方式.mp4
 123.数据校验 - JSR303校验注解、@Valid、BindingResult.mp4
 124.数据校验 - 全局异常处理.mp4
 125.数据校验 - 自定义校验器.mp4
 126.数据校验 - 错误消息提示.mp4
 127.各种O的分层模型(www.dmzshequ.com).mp4
 128.最佳实践 - 项目中的vo用法.mp4
 129.最佳实践 - 接口文档.mp4
 130.SpringMVC - 结束.mp4
 131.【源码】- DispatcherServlet 九大组件.mp4
 132.【源码】- SpringMVC - DispatcherServlet 请求处理流程.mp4
 133.【源码】- SpringMVC - 源码流程.mp4
 134.MyBatis - HelloWorld.mp4
 135.MyBatis - 简介(www.dmzshequ.com).mp4
 136.MyBatis - HelloWorld - 细节.mp4
 137.MyBatis - CRUD - 完成 - 开sql日志.mp4
 138.MyBatis - CRUD - 细节 - useGeneratedKeys 获取自增id.mp4
 139.MyBatis - CRUD - 查询所有 & 开启驼峰命名.mp4
 140.MyBatis - 参数处理 - #{}和${}.mp4
 141.MyBatis - 参数处理 - 单个参数 #{} 直接取值.mp4
 142.MyBatis - 参数处理 - 多个参数 @Param 注解标注每个参数的名字.mp4
 143.MyBatis - 返回值 - 普通、对象、List、Map.mp4
 144.MyBatis - 返回值 - ResultMap - 自定义结果集.mp4
 145.MyBatis - 关联查询 - 关联关系复习与环境搭建.mp4
 146.MyBatis - 关联查询 - ResultMap - association 指定一对一关联封装规则.mp4
 147.MyBatis - 关联查询 - ResultMap - collection 指定一对多关联封装规则.mp4
 148.MyBatis - 分步查询 - 原生分步写法.mp4
 149.MyBatis - 自动分步查询 - collection - select 属性指定需要启动的下一次查询.mp4
 150.MyBatis - 自动分步查询 - association - select 指定启动下一次查询.mp4
 151.MyBatis - 超级分步的大坑.mp4
 152.MyBatis - 分步查询 - 开启延迟加载.mp4
 153.MyBatis - 自定义结果集小结 - 1-1、1-N、N-N.mp4
 154.MyBatis - 动态SQL - if 标签.mp4
 155.MyBatis - 动态SQL - where标签.mp4
 156.MyBatis - 动态SQL - set标签.mp4
 157.MyBatis - 动态SQL - trim标签实现where.mp4
 158.MyBatis - 动态SQL - trim标签实现set.mp4
 159.MyBatis - 动态SQL - choose、when、otherwise分支选择.mp4
 160.动态sql-foreach批量操作.mp4
 161.MyBatis - 动态SQL - 批量sql数据库默认支持回滚.mp4
 162.MyBatis - 动态SQL - sql - 抽取可复用的片段.mp4
 163.MyBatis - XML中的转义字符.mp4
 164.MyBatis - 缓存机制 - 体验一级缓存.mp4
 165.MyBatis - 缓存机制 - 体验二级缓存.mp4
 166.MyBatis - 插件机制 - 知道有四大对象.mp4
 167.MyBatis - 分页插件 - 基础用法.mp4
 168.MyBatis - 分页插件 - 分页前后配合.mp4
 169.MyBatis - 逆向生成.mp4
 170.MyBatis - 最后的作业.mp4
 171.异常处理打印错误堆栈.mp4
 172.SpringBoot - 特性.mp4
 173.SpringBoot - 简化打包、部署、运维.mp4
 174.SpringBoot - 场景启动器.mp4
 175.SpringBoot - 依赖管理.mp4
 176.SpringBoot - 自动配置 - 基本理解.mp4
 177.SpringBoot - 自动配置 - 导入场景会导入一堆自动配置类,这些配置类导入基于条件注解一堆组件.mp4
 178.SpringBoot - 自动配置 - 自动配置类给容器中放组件、组件属性来自于属性类、属性类绑定配置文件.mp4
 179.SpringBoot - 自动配置 - 总结.mp4
 180.SpringBoot - 基础使用 - @ConfigurationProperties.mp4
 181.SpringBoot - 基础使用 - yaml语法.mp4
 182.SpringBoot - 基础使用 - banner设置.mp4
 183.SpringBoot - 基础使用 - 启动Spring应用的其他方式.mp4
 184.SpringBoot - 日志 - 简介.mp4
 185.SpringBoot - 日志 - 日志记录.mp4
 186.SpringBoot -日志 - 根据级别记录日志.mp4
 187.SpringBoot - 日志 - 日志分组.mp4
 188.SpringBoot - 日志 - 输出到文件.mp4
 189.SpringBoot - 日志 - 归档与切割.mp4
 190.SpringBoot - 日志 - 引入框架自己的日志配置文件.mp4
 191.SpringBoot - 日志 - 切换日志实现.mp4
 192.SpringBoot - 日志 - 总结.mp4
 193.SpringBoot - 进阶 - profiles 环境隔离.mp4
 194.SpringBoot - 进阶 - 外部化配置.mp4
 195.SpringBoot - 单元测试 - 断言机制.mp4
 196.SpringBoot - 可观测性 - actuator.mp4
 197.SpringBoot - 生命周期 - 监听器感知生命周期.mp4
 198.SpringBoot - 生命周期 - 事件驱动、异步.mp4
 199.SpringBoot - 原理总结.mp4
 200.自定义starter及总结.mp4