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

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

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

    美麗涵涵童裝店--說我博客名字,給你們打折!
    隨筆 - 82  文章 - 266  trackbacks - 0
    <2007年9月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456


    點擊這里給楊愛友發消息
    美麗涵涵童裝店
    說我博客名字,給你們打折!

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章檔案

    好友的BLOG

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

                                                                第一章 概論
    1. 關于輕量重量級的解釋
        夏昕說:現在的輕量級和重量級的確很難區分了,沒有一個明確的衡量標準,之前有人說,有classloader的算是重量級;也有人說,超過3MB的算是重量級,spring core算是輕量級的,但是加上期于的部件,估計就得列入重量記的范疇了。
    林信良說:用了spring并不等于輕量級開發。重點是您有沒有采納其精神,用了IOC就輕量級了嗎?不見得。什么都來不DI,我看也是很沉重的;如果你在設計時善用IoC,即使不用spring也是輕量級。不要為了spring而spring。
    2. IoC的理解
       Don't call me,I will call you!程序不依賴于實現,而是依賴與抽象接口。在設計業務類時,我們設計為它依賴于某抽象接口,具體的需要哪個實現類是由配置文件來幫我們注入的。這就是面向接口編程的思想,當業務需求發生變動時,我們只需修改其實現類的具體實現,而接口并沒有改變,所以低層業務代碼不做任何改動,既增加了代碼的復用率,也是功能接口變得清晰。Don't call me,you should call my interface!
    3. DI 依賴注入的理解
        保留抽象接口,讓組件依賴抽象接口,當組件要與其他實際的對象發生依賴關系時,由抽象接口來注入依賴的實際對象。依賴注入,注入你所依賴的實現類,由spring容器幫你注入適合的實現類,而不是你自己去創建bean實例。有3種基本實現方式:Interface injection、Setter injection與Constructor injection。
    4. 應用程序中獲取bean

    1     <bean id="helloBean" class="chapter2.HelloBean">
    2         <property name="helloWord">
    3             <value>Hello yangay!</value>
    4         </property>
    5     </bean>

        public static void main(String[] args) {
            Resource rs 
    = new ClassPathResource("applicationContext.xml");//從classpath下加載配置信息
            BeanFactory factory = new XmlBeanFactory(rs);//基于xml格式配置文件的實例化方式,得到一個BeanFactory
            HelloBean hello = (HelloBean)factory.getBean("helloBean");//獲取id="helloBean"的bean,此時可以調用bean里定義的所有方法
            System.out.println(hello.getHelloWord());
        }
       
        這是通過beanFactory管理Bean的方式,BeanFactory負責讀取Bean定義文件;管理對象的加載、生成;維護Bean對象之間的依賴關系;負責Bean的生命周期,對于簡單的應用程序來說,使用BeanFactory就已經足夠來管理Bean了。BeanFactory接口提供了六個方法管理Bean。
    另外還可以通過ApplicationContext來獲取Bean對象:

    1 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");//從classpath下加載配置信息
    2 HelloBean hello = (HelloBean)ctx.getBean("helloBean");//獲取id="helloBean"的bean,此時可以調用bean里定義的所有方法

                                第二章 spring IoC、AOP實例及分析
    1. IoC實例一
        控制反轉用得最多的是為業務類注入Bean對象,典型的應用是在結合struts開發是,為struts的action類來注入springDao,這樣在業務層如action類中不再介入spring API,但同時又可以利用spring提供的所有便捷功能。低層實現細節發生的變化,對業務層來說是透明的,不但降低了程序的偶合性,而且也提高了DAO對象的重用性。在這個例子中,為了簡單起見,我們只為HelloBean注入了一個字符串,而不是注入實體Bean。但這只體現出了控制反轉的特點,對于依賴注入DI并沒有得到明顯的體現。
    1)首先編寫一個簡單的JAVABEAN
    1 public class HelloBean {
    2     private String helloWord;

    3     public String getHelloWord() {
    4         return helloWord;
    5     }
    6     public void setHelloWord(String helloWord) {
    7         this.helloWord = helloWord;
    8     }
    9 }
    2)接下來編寫 Bean定義文件,定義文件告訴spring如何完成以來關系的注入等動作。我們這里命名文件為applicationContext.xml,定義文件中省略了xml文件的頭
    1     <bean id="helloBean" class="chapter2.HelloBean">//應用程序中用于取得bean的標志
    2         <property name="helloWord">//設置了bean中setter的名稱
    3             <value>Hello yangay!</value>//設置了將要注入的值
    4         </property>
    5     </bean>

    3)最后編寫一個簡單的示范程序
    1 public class SpringDemo {
    2 
    3     public static void main(String[] args) {
    4         ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    5         HelloBean hello = (HelloBean)ctx.getBean("helloBean");//獲取id="helloBean"的bean,此時可以調用bean里定義的所有方法
    6         System.out.println(hello.getHelloWord());
    7     }
    8 }
    運行之,將會看到在bean定義文件中為"helloWord"設置的值"Hello yangay!"被打印出來。
    --------------------
    2. 1. IoC實例二
        其實spring IoC的初衷就是降低程序的偶合性,使開發者面向接口編程,使業務層設計不以來于實現,具體依賴與哪個bean是在speing培植文件中來定義的。同樣在這里寫一個示范程序,包括一個接口,兩個實現類,一與業務有關的Business類,Business類依賴的是接口,而不是接口的實現,具體需要哪個實現是由spring容器來實現注入的。
    1)接口
    只聲明了一個保存的方法
    1 public interface IDeviceWriter {
    2     void svaeToDevice();
    3 }
    2)第一個實現IDeviceWriter接口的類,存儲到軟盤
    1 public class FloppyWriter implements IDeviceWriter{
    2 
    3     public void svaeToDevice() {
    4         System.out.println("存儲至軟盤");
    5     }
    6 }
    3)第二個實現IDeviceWriter接口的類,存儲到硬盤
    1 
    2 public class DiskWriter implements IDeviceWriter{
    3 
    4     public void svaeToDevice() {
    5         System.out.println("存儲至硬盤");
    6     }
    7 }

    4)業務類,依賴于抽象的IDviceWriter接口,要 存儲到磁盤還是軟盤是由spring配置文件來決定的
     1 public class Business {
     2 
     3     private IDeviceWriter writer;
     4     public void save(){
     5         writer.svaeToDevice();
     6     }
     7 
     8     public IDeviceWriter getWriter() {
     9         return writer;
    10     }
    11     public void setWriter(IDeviceWriter writer) {
    12         this.writer = writer;
    13     }
    14 }
    5)bean的定義文件
    1     <bean id="floppyWriter" class="chapter2.FloppyWriter"/>
    2     <bean id="diskWriter" class="chapter2.FloppyWriter"/>
    3     <bean id="business" class="chapter2.Business">
    4         <property name="writer">
    5             <ref bean="floppyWriter"/>
    6         </property>
    7     </bean>
        將id為writer的bean注入到business Bean中,在Business對象中可以調用FloppyWriter的所有方法,實現了將數據保存至軟盤的功能。

    6)測試類
    1 public class SpringDemo2 {
    2 
    3     public static void main(String[] args) {
    4         Resource rs = new ClassPathResource("applicationContext.xml");
    5         BeanFactory factory = new XmlBeanFactory(rs);
    6         Business business = (Business) factory.getBean("business");
    7         business.save();
    8     }
    9 }

        現在如果我們想要把數據保存到硬盤,而不是軟盤了,我們只需要修改bean的配置文件,讓業務類Business依賴于diskWriter既可,Business不做任何的修改。這也是面向接口編程的好處所在。



    posted on 2007-09-04 00:22 楊愛友 閱讀(1391) 評論(6)  編輯  收藏 所屬分類: java相關技術

    FeedBack:
    # re: spring2.0使用手冊學習筆記(一) 2007-09-04 17:25 千山鳥飛絕
    我怎么沒看得出2.0的東西來,這些只是spring一直以來就有的東東。
    建議Lz取標題實在一點。  回復  更多評論
      
    # re: spring2.0使用手冊學習筆記(一) 2007-09-04 17:37 楊愛友
    @千山鳥飛絕
    也許吧,我本意也不是只記錄2.0的新東西。我對spring了解不多,不過這些確實是我看過spring2.0后寫的,當然應該大部分內容還是1.0就有的吧。  回復  更多評論
      
    # re: spring2.0使用手冊學習筆記(一) 2007-09-04 20:44 BeanSoft
    呵呵, 2.0 加了不少的垃圾功能, 一下子變得不輕量了. 就跟 Struts 一樣, 最核心的東西出現在 1.0 之前, 之后的好多就有點雞肋了.  回復  更多評論
      
    # re: spring2.0使用手冊學習筆記(一) 2007-09-05 13:37 Lingo
    比如呢?哪些垃圾功能?  回復  更多評論
      
    # re: spring2.0使用手冊學習筆記(一) 2007-09-06 09:09 hello
    寫得很不錯,支持,希望你不斷進步??!  回復  更多評論
      
    # re: spring2.0使用手冊學習筆記(一) 2007-09-06 12:49 楊愛友
    @hello
    謝謝,一定,我會的。再引用下朋友的話,“只要你保持學習的熱情與動力,把握好方向,必然會取得長足的進步”,貴在堅持!
    should you know me ?
      回復  更多評論
      
    美麗涵涵童裝店
    親,說我博客名字,給你們打折!
    主站蜘蛛池模板: 99久久免费精品国产72精品九九| 嘿嘿嘿视频免费网站在线观看| 免费观看a级毛片| 性色午夜视频免费男人的天堂| 亚洲精品人成网线在线播放va| 亚洲中文字幕在线无码一区二区| 亚洲天堂免费在线| 疯狂做受xxxx高潮视频免费| 久久国产乱子伦精品免费午夜| 亚欧免费视频一区二区三区| 国产一级高清视频免费看| 久久久久亚洲AV成人无码网站| 亚洲AV第一成肉网| 久久免费看黄a级毛片| 亚洲精品国产精品国自产观看| 久久久无码精品亚洲日韩按摩| 三年片在线观看免费观看大全中国| 84pao国产成视频免费播放| 亚洲国产一区二区三区| 亚洲日韩精品A∨片无码加勒比| 最新国产乱人伦偷精品免费网站| 免费精品国产自产拍在线观看图片 | 久久久久亚洲AV成人无码| 一级人做人a爰免费视频| 看全色黄大色大片免费久久| 在线观看日本亚洲一区| 免费下载成人电影| 亚洲自偷自偷在线成人网站传媒 | 亚洲av伊人久久综合密臀性色 | 好爽又高潮了毛片免费下载| 亚洲人色大成年网站在线观看| 又粗又大又黑又长的免费视频 | 国产l精品国产亚洲区在线观看| 中国在线观看免费的www| 亚洲日韩av无码| 久久这里只精品99re免费 | 亚洲国产成人爱av在线播放| 一级做a爰性色毛片免费| 国产午夜亚洲精品国产成人小说| xvideos永久免费入口| 亚洲高清视频在线观看|