Spring以反向控制和AOP這2種先進(jìn)的設(shè)計(jì)理念為基礎(chǔ)。統(tǒng)一了應(yīng)用對(duì)象的查找、配置和生命周期管理,分離了業(yè)務(wù)與基礎(chǔ)服務(wù)中的不同關(guān)注點(diǎn)。
在業(yè)務(wù)層,Spring為企業(yè)級(jí)應(yīng)用提供了一個(gè)相當(dāng)全面的解決方案。這個(gè)方案包括數(shù)據(jù)庫持久化支持、聲明式事務(wù)管理、遠(yuǎn)程服務(wù)訪問,以及JMS、Mail、定時(shí)等多種企業(yè)服務(wù)。
在WEB層,Spring為企業(yè)級(jí)應(yīng)用提供了一個(gè)MVC框架,該框架與其他流行的Web框架相比毫不遜色;而且Spring可以集成各種Web框架和視圖技術(shù)。
Java可以實(shí)現(xiàn)使用分布的模塊來建立一個(gè)復(fù)雜的系統(tǒng),他們?yōu)锳pplet而來,為組件而留。
復(fù)雜的系統(tǒng)往往需要一些JavaBeans無法直接提供的服務(wù),如事務(wù)支持、安全、分布計(jì)算等,所以在1998年3月,Sun發(fā)不了EJB1.0規(guī)范。它把Java組件擴(kuò)展到服務(wù)器端,提供了很多必須的企業(yè)級(jí)服務(wù),但是它不像原來的JavaBean那樣簡單了。
現(xiàn)在Java組件開發(fā)重新煥發(fā)青春,很多新技術(shù)包括AOP和Ioc為JavaBean提供了很多EJB才擁有的強(qiáng)大功能,為JavaBeans提供了類似于EJB那樣的聲明式編碼模型,同事沒有帶來任何像EJB那樣的復(fù)雜問題。
首先為什么要使用EJB,如果沒有使用實(shí)體Bean,所以沒有使用持久化服務(wù),同樣如果沒有使用遠(yuǎn)程服務(wù)和安全服務(wù)。就沒有必要使用EJB.EJB之所以復(fù)雜是因?yàn)镋JB是為解決復(fù)雜問題而設(shè)計(jì)的,如分布式對(duì)象和遠(yuǎn)程事務(wù)的問題。
作為一個(gè)開發(fā)者,你始終應(yīng)該為你的系統(tǒng)找到最好的設(shè)計(jì)而不是實(shí)現(xiàn)。Spring背后的理念是讓你的系統(tǒng)按照你的需求盡量簡單。如果你需要的只是使用簡單Java對(duì)象來提供一些支持透明事務(wù)的服務(wù)的話,使用Spring就足夠了。
使用Spring,你的Bean通過接口與它的關(guān)聯(lián)類通信。因?yàn)椴灰蕾嚾魏翁厥鈱?shí)現(xiàn),所以采用Spring的系統(tǒng)是松耦合的,易測(cè)試的和易維護(hù)的。
因?yàn)殚_發(fā)Spring應(yīng)用系統(tǒng)使用的都是JavaBeans,所以測(cè)試很簡單。你不需要啟動(dòng)J2EE容器,因?yàn)槟銣y(cè)試的是一個(gè)POJO.
Spring是為簡化企業(yè)級(jí)系統(tǒng)開發(fā)而誕生的。使用Spring,你可以用簡單的JavaBeans來實(shí)現(xiàn)那些以前只有EJB才能實(shí)現(xiàn)的功能。
Spring是一個(gè)輕量級(jí)的Ioc和AOP容器框架
輕量級(jí):Spring是非侵入式的,基于Spring開發(fā)的系統(tǒng)中的對(duì)象一般不依賴于Spring的類。
反向控制:使用IOC,對(duì)象是被動(dòng)接收依賴類而不是自己主動(dòng)去找。可以將IOC理解為JNDI的反轉(zhuǎn)-對(duì)象不是從容器中查找它的依賴類,而是容器在實(shí)例化對(duì)象的時(shí)候主動(dòng)將它的依賴類注入給它。
面向切面:通過將業(yè)務(wù)邏輯從系統(tǒng)服務(wù)中分離出來,實(shí)現(xiàn)了內(nèi)聚開發(fā)。系統(tǒng)對(duì)象只做它們?cè)撟龅?業(yè)務(wù)邏輯,它們不負(fù)責(zé)其他系統(tǒng)問題(如日志和事務(wù)支持)。
容器:Spring是一個(gè)容器,是因?yàn)樗⑶夜芾硐到y(tǒng)對(duì)象的生命周期和配置。
框架:Spring實(shí)現(xiàn)了使用簡單的組件配置組合成一個(gè)復(fù)雜的系統(tǒng)。
posted on 2009-10-12 21:09
王永慶 閱讀(199)
評(píng)論(0) 編輯 收藏 所屬分類:
SPRING