1. 写在前面
看过Spring in Action 的同学可能会跟我有这样的困惑,刚开始完全看不进去,全是陌生的概念。在反复看了好几遍之后,我换一种思路去理解这本书。
我决定从建一个普通的网站入手,一步步去探究Spring的细节。
2. 网站需求
网站名字是Spittr,是一个模仿微博的网站。
本文的流程就是按照一个网站的构建过程,来展现在Spittr 的构建过程中用到的Spring技术。
网站主要功能有以下几点:
- 用户注册
- 用户登录
- 用户发微博
3. 网站功能
3.1 用户注册
网站的本质是信息的流动,整个web围绕信息的流动展开。
用户注册就是用户信息向网站后台流动的过程。
1. 用户填写注册信息,点击Register按钮。此时url为http://localhost:8080/spitter/register,POST请求
请求离开浏览器时,带着用户请求内容的信息(用户提交的表单信息)到达第一站Spring的DispatcherServlet。
DispatcherServlet, 前端控制器,将请求发送给Spring MVC控制器(controller)。
DispatcherServlet是Spring MVC 的核心,它负责将请求路由到其他的组件之中。
配置DispatcherServlet,使用Java将DispatcherServlet配置在Servlet容器中。
DispatcherServlet 加载包含Web组件的bean, 如控制器,视图解析器,处理器映射。
ContextLoaderListener加载应用中的其他bean,这些bean驱动应用后端的中间层和数据层。
2.请求经过DispatcherServlet之后到达控制器(SpitterController)
- 把用户提交的注册信息,存储成SpitterBean。
Bean 对应于一个实体类。此时用户注册界面提交的表单对应的是SpitterForm。再对其进行转化成为Spitter。
- SpitterRepository 将Spitter持久化。SpitterRepository 通过自动装配的方式注入SpitterController
创建应用对象之间的协作关系的行为称作装配。