<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    當(dāng)Endisoft愛(ài)上了JAVA
    I believe I can fly,I can touch the sky
    posts - 4,  comments - 1,  trackbacks - 0
    有人說(shuō)spring?aop+?spring?ioc,?才~~~是spring
    簡(jiǎn)單一點(diǎn),是一個(gè)容器.?什么容器,容納什么?是對(duì)象,或者說(shuō)bean的容器.
    那為什么叫輕量級(jí)容器呢?相對(duì)于EJB?container,使用spring不需要寫(xiě)符合容器規(guī)范的代碼,即容器不會(huì)"侵入"了你的代碼.

    這個(gè)容器會(huì)提供你的應(yīng)用(程序)中用到的所有對(duì)象,并對(duì)這些對(duì)象進(jìn)行統(tǒng)一的生命周期管理和組裝.在通常的開(kāi)發(fā)中,我們?cè)谛枰硞€(gè)對(duì)象的時(shí)候只是?new?MyObject().?在Java中,這樣沒(méi)有什么不好,因?yàn)間c會(huì)打理好"善后"工作,是系統(tǒng)級(jí)的.?而用spring,在需要某個(gè)對(duì)象時(shí),只要向容器請(qǐng)求相應(yīng)的對(duì)象,spring會(huì)找到并準(zhǔn)備好這些對(duì)象并提供給你.她也會(huì)打理好"善后"工作,但是是在應(yīng)用級(jí)的.
    另一方面,spring還會(huì)幫助你打理對(duì)象之間的依賴關(guān)系.
    比如原來(lái)的做法:

    class?A{
    }
    class?B{
    ??A?a?;
    ??public?B(){?a?=?new?A();}
    }

    而使用spring的做法
    class?A{
    }
    class?B{
    ??A?a;
    ??public?B(){}
    ??void?setA(A?a){this.a=a}
    ??A?getA(){return?this.a}
    }
    (希望你不要單純地認(rèn)為spring會(huì)寫(xiě)很多代碼)
    但從前一個(gè)方面,你可能覺(jué)得spring只是一個(gè)對(duì)象容器.從這里你就應(yīng)該看出,spring是bean容器,因?yàn)閟pring需要你的類符合bean規(guī)范:相應(yīng)于每一個(gè)成員域,都需要提供setter和getter方法.spring要使用這些方法來(lái)注入依賴關(guān)系,也就是?dependence?injection,?或者inversion?of?control.?我個(gè)人覺(jué)得還是di更容易理解,直到現(xiàn)在我還是要考慮怎么去向別人很好的解釋ioc.控制反轉(zhuǎn)(倒轉(zhuǎn)),我的理解是就如同上面的兩個(gè)例子里看到的,依賴(控制)不在體現(xiàn)在代碼邏輯里(如第一個(gè)例子),而是在配置文件里,而在代碼中我們只提供注入點(diǎn)(也就是setter和getter).

    希望我對(duì)IoC的概念的講解能夠給你一些啟發(fā).
    你可能要問(wèn)了,為什么我要這樣做呢?原來(lái)的做法有什么不妥的地方么?沒(méi)有什么不妥,只是兩種理念而已,沒(méi)有絕對(duì)的好還是不好,但我還是給你我的解釋--我理解的IoC的好處,希望有所幫助.通常在程序設(shè)計(jì)的時(shí)候,我們?cè)谛枰承┕δ軙r(shí),會(huì)相應(yīng)的去設(shè)計(jì)一些方法,然后根據(jù)OO去將方法和一成員變量組成一個(gè)類.實(shí)際上,我們最終設(shè)計(jì)出的程序是:一組類的實(shí)例互相交互完成某個(gè)特定的任務(wù).
    除了一些核心的業(yè)務(wù)方法,以外我們還要做組裝對(duì)象的工作.比如我有了一個(gè)工廠,里面有很多機(jī)器,機(jī)器在開(kāi)動(dòng)時(shí)要裝配相應(yīng)的模具.那么在工廠的生產(chǎn)過(guò)程中,?首先我要有工廠,機(jī)器,模具這樣三個(gè)類.然后我的"動(dòng)作"有:裝配,開(kāi)機(jī).通常的做法我們要做裝配,然后再去開(kāi)機(jī).而用spring,我們只是專注于開(kāi)機(jī).這樣我們就把裝配這個(gè)動(dòng)作抽離出了核心的"生產(chǎn)過(guò)程".當(dāng)某些機(jī)器改變了裝配模具時(shí),不在需要修改核心業(yè)務(wù)代碼.這就是解耦.如:

    public?class?Production{
    ??public?static?void?main(String[]?args){
    ????Factory?factory?=?(Factory)BeanFactory.getBean("factory");
    ????factory.launchProduction();
    ??}
    }

    class?Factory{
    ??Machine?machine1,machine2;
    ??void?launchProduction(){
    ?????machine1.start();?machine2.start();
    ??}
    ??//?setters?and?getters
    }

    class?Machine{
    ??Tool?tool;
    ??void?start(){
    ??}
    ??//?setters?and?getters
    }

    在launchProduction()方法中只需要開(kāi)動(dòng)每臺(tái)機(jī)器即可.而不需要每次都裝配機(jī)器.裝配的工作交給了別人.現(xiàn)在只要按下start按鈕.生產(chǎn)就開(kāi)始了!要是原來(lái):

    void?launchProduction(){
    ??machine1?=?new?MachineA();
    ??machine1.setTool(new?ToolA());
    ??machine2?=?new?MachineB();
    ??machine2.setTool(new?ToolB());
    ??machine1.start();
    ??machine2.start();
    }

    這就是工作分工,是不是感覺(jué)輕松了許多?從此以后,我們都是面向構(gòu)件去開(kāi)發(fā),而不需要過(guò)多地在代碼中體現(xiàn)構(gòu)件之間的依賴關(guān)系.

    AOP
    推薦你看一下<<effective?enterprise?java>>的第一章,對(duì)AOP有很清晰,易懂的解釋.其實(shí)AOP并非很艱深晦澀的概念,但是從架構(gòu)角度去理解她的重要性可能不是我這樣的new?fish一時(shí)半會(huì)兒可以領(lǐng)悟到的.
    我這里只是想說(shuō),有些概念你要知道是怎么回事,但理解到多深,除了天賦以外更多的是經(jīng)驗(yàn)和悟.所以不要心急.--像是在自我解嘲.
    也許在不知不覺(jué)中你就使用了很多AOP的概念,比如servlet里的filter,比如在寫(xiě)一個(gè)command類時(shí),給她的調(diào)用類在每次調(diào)用command時(shí)前后加上:preProcess和postProcess...
    我不想解釋太多,<<eej>>的解釋已經(jīng)足夠.
    posted on 2006-09-26 23:31 Endisoft 閱讀(1190) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    <2006年9月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(1)

    隨筆檔案(4)

    文章分類(5)

    文章檔案(3)

    類的初始化

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 5180
    • 排名 - 3050

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 狠狠色伊人亚洲综合网站色| 亚洲丁香色婷婷综合欲色啪| 亚洲熟妇无码AV不卡在线播放 | 亚洲国产精华液2020| 日本视频一区在线观看免费| 亚洲日韩乱码久久久久久| 麻花传媒剧在线mv免费观看| 亚洲蜜芽在线精品一区| av大片在线无码免费| 国产精品亚洲精品青青青| 成人毛片免费在线观看| 精品国产日韩亚洲一区在线| 夜色阁亚洲一区二区三区| 久青草视频97国内免费影视| 亚洲日韩国产精品第一页一区| 免费在线中文日本| 亚洲毛片无码专区亚洲乱| 在线观看免费大黄网站| 美美女高清毛片视频黄的一免费| 亚洲一区无码精品色| 久久精品成人免费网站| 亚洲午夜国产精品| 中文字幕第13亚洲另类| a级片免费在线观看| 亚洲午夜在线电影| 91在线视频免费91| 理论片在线观看免费| 亚洲精品在线观看视频| 在线免费观看一区二区三区| 九九全国免费视频| 久久亚洲AV成人出白浆无码国产| 免费99精品国产自在现线| 婷婷亚洲综合五月天小说在线 | 亚洲精品中文字幕无码蜜桃| 91成人免费观看| 色九月亚洲综合网| 亚洲成a人片在线观看无码| 成年轻人网站色免费看| 免费污视频在线观看| 亚洲精品无码日韩国产不卡av| 亚洲精品亚洲人成人网|