熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Spring筆記和小結(四)

2022-06-13   來源: Java開源技術 
    本篇主要介紹使用Spring來進行依賴注入以及對以前代碼的改進

    如果你機器上沒有安裝Spring需要先到官方網站(http://wwwspringframeworkorg)上去下載將Spring的lib放到war\WEBINF\lib下讓應用能夠找到它們

    將現有應用程序轉移到一個設計良好的POJO的基於Spring的應用其實很簡單只需要以下幾個步驟

     利用依賴注入的思想對現有代碼進行重構model對象看作beanservice看作aspect一般我們只有bean而沒有使用到service

     去掉代碼中實例化對象和設置依賴(即通過set方法設置)的那部分代碼

     創建一個配置文件來描述bean和aspect

     通過Spring來訪問我們的代碼

    下面我們就按照上面的步驟來改進我們的程序

    先看看管理我們bean和aspect的配置文件目前這裡沒有用到aspect

    Example RentABikecontextxml

    Bruces Bikes         

    這裡的後面的class是具體類實際情況可能需要完整的包名+類名的形式這裡使用的默認包而bean前面的id用來唯一標示這個bean
下面的Bruces Bikes是給這個bean設置屬性這裡就是所謂依賴注入的思想屬性名和值可以被動態的set到相應的bean中去下面這個commandLineView也一樣只不過表示它有個屬性是rentaBike bean的一個引用大家如果不明白後面會講到具體的實現

    接著來看看這個改進後的裝配器

    Example RentABikeAssemblerjava
    import orgspringframeworkcontextsupportClassPathXmlApplicationContext;
    public class RentABikeAssembler
    { 
    public static final void main(String[] args)
    {   
    //使用這一句來讀取上面定義的配置文件   
    ClassPathXmlApplicationContext ctx = new      
    ClassPathXmlApplicationContext(RentABikeAppcontextxml);   
    //完成依賴注入   
    CommandLineView clv =(CommandLineView)ctxgetBean(commandLineView);   
    clvprintAllBikes( ); 
    }
    }

    它使用ClassPathXmlApplicationContext(RentABikeAppcontextxml)來讀取配置文件Spring其實有很多方法來讀取配置文件後面會陸續介紹的
ctxgetBean(commandLineView);這一句先到配置文件中去找id為commandLineView的bean這個時候找到了其具體類是CommandLineView並將屬性和值注入到這個對象中

    我們回顧一下改動前的代碼
    public class RentABikeAssembler
    { 
    public static final void main(String[] args)
    {   
    CommandLineView clv = new CommandLineView( );//   
    RentABike rentaBike = new ArrayListRentABike(Bruces Bikes);//   
    clvsetRentaBike(rentaBike);//   
    clvprintAllBikes( ); 
    }
    }

    大家可以發現上面我注釋的句是被替換掉了這些操作是由Spring框架來完成了依賴注入
    依賴注入的好處就是可以通過修改配置文件來給類動態加載相關的屬性和引用而不用修改代碼


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29017.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.