浅谈SSM框架
学习ssm框架(spring+springMVC+myBatis)有一段时间了,下面谈谈自己的看法
Spring框架(百科)
Spring是一个轻量级的容器框架,它的核心功能是控制反转(IoC)和面向切面(AOP);它就是一个用来生产bean的工厂
轻量级框架优点是减小开发的复杂度,缺点是处理能力弱(如事务功能弱、不具备分布式处理能力,struts也是轻量级框架)
控制反转IoC–一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象,它的作用在于解耦和
切面编程AOP–Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的–完成业务逻辑–仅此而已。
在ssm框架中spring框架起衔接springMVC和myBatis框架作用,因为业务层会调用持久层的数据库的数据处理,web层会调用业务层的业务处理。
springMVC框架(百科)
springMVC主要通过前端控制器对网页请求进行处理,它的注解十分方便,简洁化了开发和测试。
Spring MVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。他的两个核心是:
处理器映射HandlerMapping:选择使用哪个控制器来处理请求 ;
视图解析器ViewResolver:选择结果应该如何渲染页面;
工作流程
(1) Http请求:客户端请求提交到DispatcherServlet。
(2) 寻找处理器:由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller。
(3)调用业务处理和返回结果:Controller调用业务逻辑处理后,返回ModelAndView。
(4)(5)处理视图映射并返回模型: DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。
(6) Http响应:视图负责将结果显示到客户端
myBatis框架(百科)
myBatis是一个半自动化的持久层框架,使用者可以直接面对sql语句对数据库操作,很方便(反面这也是它的缺点,要写大量的数据库操作语句);MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
myBatis强大之处在于它的动态sql语句,不用去管数据库语句的逗号那些繁琐的东西,很方便。
myBatis的事务交给Spring管理,Spring的AOP切面编程与myBatis事务的配合十分完美,你去使用它会有种它们注定是一对的感受。
myBatis的一级缓存是sqlSession级别,默认开启;二级缓存是application级别,默认关闭。缓存针对于查找操作,对于增删改操作,缓存会被刷新。详细参考
三个框架整合流程
在ssm框架中spring框架起衔接springMVC和myBatis框架作用,因为业务层会调用持久层的数据库的数据处理,web层会调用业务层的业务处理。
因此服务器启动时,会首先加载spring容器spring配置文件中会加载myBatis对数据库的操作以及事务操作,然后加载SpringMVC容器。
下面具体从配置文件来看
首先是服务器的配置文件web.xml
一、加载spring的配置文件application.xml
进入application.xml文件中
这里首先会扫描所有的bean加载到Spring容器中,然后加载myBatis持久层以及事务,没有扫描Controller层是因为ssm框架中的SpringMVC容器会单独扫描Controller层,这样分开扫描,分工明确,条例清晰,后面会有文章单独谈扫描路径
myBatis持久层的加载
事务加载
到此Spring容器已经加载完成,可以看到Spring框架和myBatis框架的融合,下面说SpringMVC框架
二、web.xml文件加载spring完成后,继续加载SpringMVC
进入springMvc.xml文件
这里扫描只会扫描Controller层,因为SpringMVC容器是Spring容器的子容器,它可以使用Spring容器加载的东西。
由于我的配置是拦截所有请求,这里对静态资源的加载也要配置
视图解析器的配置
到这里整合算是结束,上面可能存在疏漏之处,请提出。
对于三个框架的使用,关键在于配置,大量的代码被配置优化了,Spring框架对springMvc和myBatis框架的融合,简化了整个业务流程,代码十分简洁。轻量级,速度快,效率高,这九个字形容SSM框架最好不过噢