主題:有關Spring3.x 整合myBatis3.1的輕量級框架 web
對於如今主流的j2ee企業級開發而言,ssh(struts+hibernate+spring)依然是一個事實的標準。 spring
由struts充當的mvc調度控制;hibernate的orm持久化映射;spring的ioc和aop的容器環境近乎於完美的框架組合。 sql
可是呢,在實際的開發工做中,因爲程序猿對於技術、以及更加快速的解決方案的追求,咱們會愈來愈發現ssh框架所存在的諸多問題和困擾。 編程
Ssh框架存在的問題: session
1.隨着spring mvc的快捷使用,咱們會發現spring mvc的做用和struts的整個功能,對基於mvc調度而已,存在嚴重的替代做用; mybatis
2.Hibernate雖然在orm方面給開發人員帶來了很大的方面,程序猿能夠基本上只須要關注程序的業務邏輯處理。可是呢,業務的複雜性和隨意性永遠不是那麼簡單的事,常常會遇到hibernate的配置方案沒法知足業務邏輯,這時候靈活的SQL操做就顯得很重要; mvc
3.你會發現,在使用ssh的時候,你愈來愈沒法忍受框架的臃腫。須要配置不少文件,須要考慮多個框架的jar兼容問題,多個框架運行流轉的麻煩等等; app
基於對以上存在的諸多問題的考慮,咱們急需一套更加輕量級、高效的框架。考慮到spring的高度解耦、靈活的設計。你會發現,spring mvc對於請求調度的處理;spring ioc對於容器的管理,很是的高效簡潔。 框架
而後,就剩下一個orm產品。考慮到當前orm框架中,支持基於原生SQL操做,同時又高效、簡潔,那就是MyBatis了。 ssh
這時候,你會發現框架其實也能夠這般的簡潔、靈活。尤爲是基於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三層逐層依賴注入,和之前是同樣的,惟一不一樣的是,這些逐層的依賴注入,能夠採用全註解的方式,進行配置。
好吧,先寫到這裏,懶得繼續寫了,湊合着看吧。