javascript
轻松理解Spring框架的基本思想
說起Spring框架,就不得不說J2EE的EJB。年齡稍大一些的Java程序員對J2EE的EJB還是記憶猶新的,當時使用EJB開發(fā)大型應用系統(tǒng)非常時髦,Java程序員無不以掌握EJB開發(fā)技術(shù)為自豪,程序員引以為豪的原因是EJB的技術(shù)太復雜了,以至于一般的Java程序員很難掌握這么復雜的技術(shù)。
EJB的學習成本很高,開發(fā)效率卻不高,需要編寫很多重復的代碼,這些問題阻止了EJB的繼續(xù)發(fā)展。就在EJB技術(shù)止步不前的時候,Spring框架在合適的時機出現(xiàn)了,Spring框架和EJB不同,Spring框架的學習成本非常低,它是一個輕量級的開發(fā)框架,更多強調(diào)面向?qū)ο蟮脑O(shè)計,而不是讓現(xiàn)有的技術(shù)變得更復雜,它使用JavaBean替代了復雜的EJB,并且為JavaBean提供了簡單易用的應用配置框架。
一個JavaBean就是一個公共類,它可以被其它JavaBean類作為組件來使用,并且JavaBea之間的組配不需要在代碼級實現(xiàn),完全可以在配置層和注解層實現(xiàn),Spring會自動選擇相適配的JavaBean來組配運行。這種自動適配機制避免了JavaBean與使用類之間的代碼耦合,提高了程序的可擴展性和維護性。
例如類A要使用類B,類B是類A的屬性,如果直接在類A中創(chuàng)建類B,當類B因業(yè)務(wù)需要修改時,也需要修改類A的代碼,這種寫法就是代碼耦合,也可以說類A和類B屬于代碼耦合。
假如我們把類B的創(chuàng)建交給Spring,Spring通過配置文件或者通過Java注解來創(chuàng)建類B,然后再由Spring把創(chuàng)建的類B實例和類A的實例組配起來,這樣就避免了類A與類B的代碼耦合。這種機制就是Spring框架的控制反轉(zhuǎn)思想,相當于類A把創(chuàng)建類B權(quán)利交給了Spring,由Spring來控制類B的創(chuàng)建。
Spring框架還有一個比較重要的功能,那就是AOP機制。Spring框架的AOP機制可以把系統(tǒng)中的一些通用功能抽取出來,作為JavaBean來使用,與此同時在系統(tǒng)的業(yè)務(wù)流程代碼中設(shè)置調(diào)用這些JavaBean功能的切入點,當系統(tǒng)業(yè)務(wù)流程執(zhí)行到切入點時,Spring會自動把需要調(diào)用的JavaBean橫向切入到業(yè)務(wù)流程指定的位置,AOP的這種技術(shù)也稱為“橫切”技術(shù)。
例如,在一個業(yè)務(wù)系統(tǒng)中,當用戶要進入需要操作權(quán)限的頁面時,系統(tǒng)會先進入登錄頁,要求用戶登錄系統(tǒng)后再進入該頁面。這樣的操作權(quán)限頁面會有多個,如果為每個頁面都寫登錄業(yè)務(wù)邏輯處理代碼,顯然是會造成代碼冗余,維護起來也非常麻煩。比較好的做法是把用戶登錄業(yè)務(wù)處理作為一個獨立的JavaBean,這個JavaBean也稱為AOP的“切面”。然后在需要用戶操作權(quán)限的業(yè)務(wù)流程頁面設(shè)置“切入點”,并通過注解或配置文件將“切面”和“切入點”連接起來。當業(yè)務(wù)流程執(zhí)行到“切入點”時,Spring框架會自動把與切入點關(guān)聯(lián)的“切面”切入到業(yè)務(wù)流程“切入點”所在的位置,開始執(zhí)行“切面”代碼,直至切面代碼執(zhí)行完畢,然后根據(jù)“切面”返回的結(jié)果確定是否執(zhí)行后面的流程。下圖是用戶登錄功能切入到業(yè)務(wù)流程的示意圖。
?
圖1 用戶登錄功能切入到業(yè)務(wù)流程示意圖
Spring框架還有一個最大的特征就是和現(xiàn)有的開發(fā)框架不是競爭關(guān)系,而是采用融合的方式將其它框架集成進來,充分利用其它框架的技術(shù),為系統(tǒng)實現(xiàn)提供最優(yōu)解決方案。SSM就是Spring框架融合了MVC框架技術(shù)和MyBatis數(shù)據(jù)庫框架技術(shù)。
總結(jié)
以上是生活随笔為你收集整理的轻松理解Spring框架的基本思想的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java】选择结构排坑指南
- 下一篇: javascript全栈开发实践-web