主题:有关Spring3.x 整合myBatis3.1的轻量级框架
对于现在主流的j2ee企业级开发而言,ssh(struts+hibernate+spring)依然是一个事实的标准。
由struts充当的mvc调度控制;hibernate的orm持久化映射;spring的ioc和aop的容器环境近乎于完美的框架组合。
但是呢,在实际的开发工作中,由于程序猿对于技术、以及更加快速的解决方案的追求,我们会越来越发现ssh框架所存在的诸多问题和困扰。
Ssh框架存在的问题:
1.随着spring mvc的快捷使用,我们会发现spring mvc的作用和struts的整个功能,对基于mvc调度而已,存在严重的替代作用;
2.Hibernate虽然在orm方面给开发人员带来了很大的方面,程序猿可以基本上只需要关注程序的业务逻辑处理。但是呢,业务的复杂性和随意性永远不是那么简单的事,经常会遇到hibernate的配置方案无法满足业务逻辑,这时候灵活的SQL操作就显得很重要;
3.你会发现,在使用ssh的时候,你越来越无法忍受框架的臃肿。需要配置很多文件,需要考虑多个框架的jar兼容问题,多个框架运行流转的麻烦等等;
基于对以上存在的诸多问题的考虑,我们急需一套更加轻量级、高效的框架。考虑到spring的高度解耦、灵活的设计。你会发现,spring mvc对于请求调度的处理;spring ioc对于容器的管理,非常的高效简洁。
然后,就剩下一个orm产品。考虑到当前orm框架中,支持基于原生SQL操作,同时又高效、简洁,那就是MyBatis了。
这时候,你会发现框架其实也可以这般的简洁、灵活。尤其是基于REST风格的Spring3 MVC资源映射编程模型,编写的Code真的很优雅。那是相当的惊喜,编程之美。
以上呢,主要说了当前主流的ssh框架存在的一些问题,以及因此我们可以选择的更加灵活、高效的新型框架Spring3.x集合Mybatis3.x。
下边呢,着重讲一下基于Spring3.x集合Mybatis3.x这种更加轻量级的框架的基本构成和相关配置文件。
Spring mvc的运行原理模型图例:
1.Web端发送了一个http请求,通过在web.xml中配置的Spring的核心Servlet控制器DispatcherServlet进行统一拦截。
2.Spring的核心DispatcherServlet,根据handlerMapping XML处理文件的配置,返回给spring核心处理器,并调度到handler匹配的请求的具体处理Controller。
3.Spring的用户Servlet处理器,根据请求的参数,进行具体的业务逻辑处理,然后返回相应的ModelAndView,给spring核心处理器。
4.Spring核心处理器Servlet根据用户Servlet返回的逻辑视图,返回相应的展示视图,相应用户请求。
Spring mvc基本上和主流的mvc框架的处理逻辑是一致的。下面主要讲一下spring的两个重要的配置文件。
applicationContext.xml(我个人认为,这就是单纯的spring的配置文件)
1.dataSource数据源的配置;
2.transactionManager事务管理;
3.sqlSessionFactory数据session工厂;
4.<tx:annotation-driven transaction-manager="transactionManager" />基于spring3的全注解事务管理驱动配置。
5.<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">spring集成mybatis的处mapper整包路径扫描。
context-dispatcher.xml(我个人认为,这其实就是类似于strut的配置文件,作用于spring mvc)
1.<mvc:annotation-driven />spring核心处理器的Handler映射和适配器服务注册
2.<context:component-scan base-package="com.matol.*" /> 基于全注解包路径扫描。
3.Spring的试图资源viewResolver注册
spring基本上也就是这些了,至于ssh中的ioc三层逐层依赖注入,和以前是一样的,唯一不同的是,这些逐层的依赖注入,可以采用全注解的方式,进行配置。
好吧,先写到这里,懒得继续写了,凑合着看吧。