Spring编程常见错误50例,Spring开发老兵 10 年避坑心法

你会学到什么?

  • 拿来即用的 Spring 编程备忘录
  • Spring 核心技术及源码拆解
  • Spring Web 关键处理流程详解
  • Spring 开发 50+ 常见问题解决方案

课程介绍

Spring 的广泛应用,让原本一些错综复杂的开发工作变得简单起来。这也让很多后端程序员,尤其是 Java 程序员,从中获益。

只要你使用过 Spring,有过一些线上的开发经验,或多或少都会遇到类似这样的问题:

虽然完成了工作,但是总觉得心里没底。例如在给一个接口类添加 @RestController 注解时,你会想换成 @Controller 会更好吗?

为什么只是稍微“动”了下,就出故障了呢?例如在 Spring Boot 中,将 Controller 层的类移动到 Application 的包之外,Controller 层提供的接口就直接“失效”了。

而当真正遇到问题时,又该从何查起?例如有些代码在一些项目中是可以运行的,但是换成另外一个项目就不可以了。甚至有时候都不是换一个项目,只是添加了一些新功能,也会出问题。

当你习惯于 Spring 的便捷强大,是否还能跳出那些既定规则,去思考这些问题背后的原理?面对海量源码,又是否能够快速找到解决方案?

这个专栏衍生于傅健老师近 10 年的开发总结 ToDoList,从中节选出了 50+ 代表性案例进行分析,给出最佳解决方案,希望这份避坑指南能带给你最直接的帮助与收获!

课程设计

本专栏共分为以下三个部分,可以对照以下这张图去理解设计思路:

Spring编程常见错误50例,Spring开发老兵 10 年避坑心法

Spring Core 篇:包括 Bean 定义、注入、AOP 等核心功能的使用问题讲解,这是 Spring 的基石。不管未来是做 Spring Web 开发,还是使用 Spring Cloud 技术栈,你都绕不开这些实践。

Spring Web 篇:出于大多项目使用 Spring 还是为了进行 Web 开发考虑,作者梳理了从请求 URL 解析、Header 解析、Body 转化到授权等 Web 开发必知必会案例。它们正好涵盖了从一个请求到来,到响应回去这一完整流程。

Spring 补充篇:重点介绍 Spring 测试、Spring 事务、Spring Data 相关问题。最后,总结 Spring 使用中发生问题的根本原因。

课程目录

开篇词|贴心“保姆”Spring罢工了怎么办?
Spring Core篇
导读|5分钟轻松了解Spring基础知识
01 Spring Bean定义常见错误
案例1:隐式扫描不到Bean的定义
案例2:定义的Bean缺少隐式依赖
案例3:原型Bean被固定
02 Spring Bean依赖注入常见错误(上)
案例1:过多赠予,无所适从
案例2:显示引用Bean时首字母忽略大小写
案例3:引用内部类的Bean遗忘类名
03 Spring Bean依赖注入常见错误(下)
案例1:@Value没有注入预期的值
案例2:错乱的注入集合
04 Spring Bean生命周期常见错误
案例1:构造器内抛空指针异常
案例2:意外触发shutdown方法
05 Spring AOP常见错误(上)
案例1:this调用的当前类方法无法被拦截
案例2:直接访问被拦截类的属性抛空指针异常
06 SpringAOP常见错误(下)
案例1:错乱混合不同类型的增强
案例2:错乱混合同类型增强
07 Spring事件常见错误
案例1:试图处理并不会抛出的事件
案例2:监听事件的体系不对
案例3:部分事件监听器失效
08答疑现场:Spring Core篇思考题合集Spring Web篇
导读|5分钟轻松了解一个HTTP请求的处理过程
09 Spring Web URL解析常见错误
案例1:当@PathVariable遇到
案例2:错误使用@RequestParam、@PathVarible等注解
案例3:未考虑参数是否可选
案例4:请求参数格式错误
10 Spring Web Header解析常见错误
案例1:接受Header使用错Map类型
案例2:错认Header名称首字母可一直忽略大小写
案例3:试图在Controller中随意自定义CONTENT_TYPE等
11 Spring Web Body转化常见错误
案例1:No converter found for return value of type
案例2:变动地返回Body
案例3:Request body is missing
12Spring Web参数验证常见错误
案例1:对象参数校验失效
案例2:嵌套校验失效
案例3:误解校验执行
13Spring Web过滤器使用常见错误(上)
案例1:@WebFilter过滤器无法被自动注入
案例2:Filter中不小心多次执行doFilter
14Spring Web过滤器使用常见错误(下)
案例1:@WebFilter过滤器使用Order注解无效
案例2:过滤器被多次执行
15 Spring Security常见错误
案例1:ROLE_前缀与角色
案例2:permitAll无效问题
16 Spring Exception常见错误
案例1:特殊的404异常
案例2:小心过滤器异常
17 答疑现场:SpringWeb篇思考题合集
Spring补充篇
18 Spring Data常见错误
案例1:默认值的错误
案例2:注意读与取的一致性
案例3:冗余的Session
19Spring事务常见错误(上)
案例1:unchecked异常与事务回滚
案例2:试图给private方法添加事务
20Spring事务常见错误(下)
案例1:嵌套事务回滚错误
案例2:多数据源间切换失败之谜
21Spring Rest Template常见错误
案例1:参数类型确定是MultivalueMap?
案例2:当URL中含有特殊字符
案例3:小心多次URLEncode
22 Spring Test常见错误
案例1:资源文件扫描不到
案例2:容易出错的Mock
23答疑现场:Spring补充篇思考题合集
知识回顾|系统梳理Spring编程错误根源
结束语|错误永远比想象的多
结课测试|来赴一场100分之约!

讲师介绍

傅健,Netty 源码贡献者,《微服务之道:度量驱动开发》作者之一,思科中国研发中心平台软件工程师,从业经验 10 余年。

期间做过很多项目,从移动端应用到文档存储系统,从消息系统到电话接入系统。也接触过很多不同类型的开源软件,很喜欢深究原理,所以现在也是 Netty、Jedis、Spring Data Redis、influxdb–java、Jenkins 等很多开源项目的 Contributor。

(0)
上一篇 2021年6月30日 下午10:58
下一篇 2021年7月1日 下午4:20

相关推荐

发表回复

登录后才能评论