写一个或者几个能用 AOP 功能的测试用例:加深对 Spring AOP 的理解的,最好是把 AOP 中的前置通知、后置通知、返回通知、异常通知、环绕通知都实现一遍,并通过调试,把整体的 AOP 流程搞得非常清楚。
写一套自定义注解并附上对应的测试用例:现在大家都使用 SpringBoot 了,普遍采用扩展 Spring 的方式就是自定义注解。所以,要理解 Spring 的自定义扩展点,就是要理解 Spring Boot 是如何做到自定义注解的。加载自定义注解,处理自定义注解,最好是通过写出自定义注解的测试用例,然后一步步调试观察出整个流程来。
写一个能手动映射 DispatcherServlet 路径的测试用例:在 Spring MVC 中,DispatcherServlet 是所有 web 请求的第一关卡,是非常核心的类。写关于 DispatcherServlet 的测试用例,我建议要想办法通过编码而不是配置去把 DispatcherServlet 相关的路径映射等功能做出来。这对我们理解 Spring MVC 的请求路由,请求映射以及相关核心类的加载和使用都非常重要。
写一个自定义的 HttpMessageConverter 加对应的测试用例:自定义 HttpMessageConverter 是我们在使用 Spring 做 web 开发经常要做的一件事情。通过写自定义的 HttpMessageConverter,以及对应的测试用例,对我们理解请求是如何被转化成 Java 对象,Java 对象又是如何转化成我们定义的响应内容格式的这个关键流程是非常重要的。
自定义一个 WebDataBinder 并让它生效:使用了 HttpMessageConverter 去转化请求和响应,其中核心的一点是:在请求时如何把参数去绑定到对应的 Java 对象上。而在绑定参数过程中,数据校验也经常和 WebDataBinder 混合在一起。所以理解 WebDataBinder,能更好理解 web 请求到 Spring 中 Java 对象的转化机制。
画一张从请求到响应的 Spring MVC 所用到的类的流程图:了解了 Spring MVC 中的几个核心重要类,我们就可以把这些重要类关联起来,并结合一些 Spring MVC 中别的相关类,共同构造出一幅完整的请求-响应流程图,从而加深我们对 Spring MVC 整个体系的理解。
自己实现一个 Spring Boot Starter:对于 Spring Boot,我们本身最重要的是去理解 Spring Boot 是如何通过自动配置,把各种 Spring 组件结合在一起的。而这种自动配置,其实就是通过各个组件写自己的 Spring Boot Starter 来完成的。自己实现一个 Spring Boot Starter, 我们就能理解到 Spring Boot 的自动配置、自动加载方法。
三、通过项目融会贯通
做了练习后,我们就要通过一些小项目,去把学到的 Spring 知识融汇贯通,串联到一起。我推荐做两个简单的项目:
第一个项目是做一个简单的模拟银行项目,需求如下:
可以检查余额
可以存款
可以退款
可以看到交易流水
可以计算利率
能优雅的退出应用
第二个项目是做一个简单的员工管理系统,需求如下:
可以统计出今年的新员工有多少
输入员工姓名的部分字,提示可能的全名
每个员工有五位的员工编号
员工有自己的部门和上级
可以显示员工在职,离职状态
有员工信息页面,可以显示员工编号,姓名,部门以及状态
以上就是我自己总结出来的学习 Spring 的方法。
另外我还想提醒大家一句,学习 Spring,是为了我们的工作服务的。所以,除了学习 Spring 本身,这里,我还建议大家要经常关注一些 Spring 的实践问题。把一些印象比较深的错误和对应的解决办法汇总起来,看看有没有什么办法能通过修改框架,增加约束,去减少这些错误的发生。
写一个或者几个能用 AOP 功能的测试用例:加深对 Spring AOP 的理解的,最好是把 AOP 中的前置通知、后置通知、返回通知、异常通知、环绕通知都实现一遍,并通过调试,把整体的 AOP 流程搞得非常清楚。
写一套自定义注解并附上对应的测试用例:现在大家都使用 SpringBoot 了,普遍采用扩展 Spring 的方式就是自定义注解。所以,要理解 Spring 的自定义扩展点,就是要理解 Spring Boot 是如何做到自定义注解的。加载自定义注解,处理自定义注解,最好是通过写出自定义注解的测试用例,然后一步步调试观察出整个流程来。
写一个能手动映射 DispatcherServlet 路径的测试用例:在 Spring MVC 中,DispatcherServlet 是所有 web 请求的第一关卡,是非常核心的类。写关于 DispatcherServlet 的测试用例,我建议要想办法通过编码而不是配置去把 DispatcherServlet 相关的路径映射等功能做出来。这对我们理解 Spring MVC 的请求路由,请求映射以及相关核心类的加载和使用都非常重要。
写一个自定义的 HttpMessageConverter 加对应的测试用例:自定义 HttpMessageConverter 是我们在使用 Spring 做 web 开发经常要做的一件事情。通过写自定义的 HttpMessageConverter,以及对应的测试用例,对我们理解请求是如何被转化成 Java 对象,Java 对象又是如何转化成我们定义的响应内容格式的这个关键流程是非常重要的。
自定义一个 WebDataBinder 并让它生效:使用了 HttpMessageConverter 去转化请求和响应,其中核心的一点是:在请求时如何把参数去绑定到对应的 Java 对象上。而在绑定参数过程中,数据校验也经常和 WebDataBinder 混合在一起。所以理解 WebDataBinder,能更好理解 web 请求到 Spring 中 Java 对象的转化机制。
画一张从请求到响应的 Spring MVC 所用到的类的流程图:了解了 Spring MVC 中的几个核心重要类,我们就可以把这些重要类关联起来,并结合一些 Spring MVC 中别的相关类,共同构造出一幅完整的请求-响应流程图,从而加深我们对 Spring MVC 整个体系的理解。
自己实现一个 Spring Boot Starter:对于 Spring Boot,我们本身最重要的是去理解 Spring Boot 是如何通过自动配置,把各种 Spring 组件结合在一起的。而这种自动配置,其实就是通过各个组件写自己的 Spring Boot Starter 来完成的。自己实现一个 Spring Boot Starter, 我们就能理解到 Spring Boot 的自动配置、自动加载方法。
三、通过项目融会贯通
做了练习后,我们就要通过一些小项目,去把学到的 Spring 知识融汇贯通,串联到一起。我推荐做两个简单的项目:
第一个项目是做一个简单的模拟银行项目,需求如下:
可以检查余额
可以存款
可以退款
可以看到交易流水
可以计算利率
能优雅的退出应用
第二个项目是做一个简单的员工管理系统,需求如下:
可以统计出今年的新员工有多少
输入员工姓名的部分字,提示可能的全名
每个员工有五位的员工编号
员工有自己的部门和上级
可以显示员工在职,离职状态
有员工信息页面,可以显示员工编号,姓名,部门以及状态
以上就是我自己总结出来的学习 Spring 的方法。
另外我还想提醒大家一句,学习 Spring,是为了我们的工作服务的。所以,除了学习 Spring 本身,这里,我还建议大家要经常关注一些 Spring 的实践问题。把一些印象比较深的错误和对应的解决办法汇总起来,看看有没有什么办法能通过修改框架,增加约束,去减少这些错误的发生。