浅谈Spring

有的时候我一直在想,Spring到底是什么?Spring到底能干什么?我们为什么要用spring?我个人认为spring其实就是一个集成框架,他把一些基础的代码都给封装好了,我们只需要按照spring的一套规范去使用就好了。同时spring也是一个容器Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑系统服务(例如审计(auditing)和事务transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

其中最主要的就是ioc 依赖注入,控制反转。还有aop面向切面编程,这个在以后再去讨论。还有数据访问和集成,任何应用程序其核心就在于对于数据的访问和操作,数据有多种表现形式,如数据表,如xml,消息等,而每种数据又有每种不同的数据访问技术,如hibernate,mybatis等。这样操作起来就很麻烦,不利于整合。而spring为我们提供了一套基于Dao的开发抽象层。它把我们所需要的整合技术都封装到里面,还把所有的访问数据的检查时异常转换为非检查时异常,在Dao层有一套完整的异常体系。同时spring对于数据访问层的各种模板化技术进行了薄层封装。讲模板化的代码给隐藏起来,简化我们的代码,这样spring就建立起来了数据形式和访问技术无关的dao层,借助aop技术,spring提供了声明事务话功能。

Web及远程访问,spring提供了一套类似于struts的mvc的框架,叫做springmvc。他对web的访问和控制进行了很多封装,我们可以通过注解的方式来调用,他也对很多service框架进行了整合,使用springmvc会大大简化我们的开发。

现在来做一个登陆功能来解析spring。附上一张自己理解的springmvc流程图先

浅谈Spring_第1张图片

下面就以一个登陆系统来理解springmvc的一些简单原理的工作流程

首先得在web.xml里面注册一个springmvc的前端控制器

Servelt DispatcherServlet 如果我们不使用自定义的名字和位置的话,他默认是在web-inf下面的"servlet-name"+ "-servlet.xml"文件。

然后我们让这服务器启动的时候自动去加载这个类



dispatcherServlet
org.springframework.web.servlet.DispatcherServlet



1



dispatcherServlet
/
>

加载到servlet拦截器的时候,他会去检查里面的代码,看看有没有错误。

接下来要写拦截器里面的配置代码

1




2




3

第一个段代码主要是开启springmvc的注解,让他去自动扫描包里面带有注解的类,如果扫描到了这个包里面的类,他就会去自动装载这些类,完成它的创建。

第二段代码主要是配置我们的视图解析器,prefix会去解析请求的视图,而suffix会解析返回的结果视图一般是进行拼装返回结果的。

第三段代码, 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。
并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。

现在我们来写一个视图层,让他发送一个请求;

浅谈Spring_第2张图片

点击提交按钮会经过如下几步

1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;
      2.  DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;
      3.  DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法
 4.  提取Request中的模型数据,填充Handler入参,一般情况下使用最多的是根据@RequestMapping("value=/login")开始匹配并执行Handler(Controller) 。 
5.这个handler会依次的去调用service和dao方法。最后返回一个我们所需要的结果集字符串,可以是一个string类型的,也可以是一个modelandview类型的,也可以是一段json代码等等。
6.这个结果集会去根据我们配置的视图解析器来返回一个我们加工好的视图。spring没有限制我们返回的视图类型,他可以是JSP也可以是html。

你可能感兴趣的:(java框架,java,框架)