淺析spring依賴注入的3種實現(xiàn)方式_JSP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:詳談Java如何進階
      本來我想把這篇文章的名字命名為:怎樣成為一個優(yōu)秀的Java程序員的,但是自己還不夠優(yōu)秀,而本篇所涉及的都是自己學習和工作中的一些經(jīng)驗,后來一想,叫怎樣進階Java可能更為合適吧.能給初學Java的人一個參考,也就是我本來的心愿.如果有大牛看到不妥之處,敬請指正

          在講解依賴注入的3種實現(xiàn)方式之前,這里先澄清一下依賴注入的意義:讓組件依賴于抽象,當組件要與其他實際對象發(fā)生依賴關系時,通過抽象來注入依賴的實際對象。
          依賴注入的3種實現(xiàn)方式分別是:接口注入(interface injection)、Set注入(setter injection)和構造注入(constructor injection)。接下來筆者還將主要通過舉例的方式,把依賴注入的3種實現(xiàn)方式介紹給讀者。
          3.2.1  接口注入(interface injection)
          接口注入指的就是在接口中定義要注入的信息,并通過接口完成注入。結合前面的示例,其具體步驟如下。
      (1)編寫一個接口IBusiness,各種數(shù)據(jù)庫的注入將通過這個接口進行。IBusiness.java的示例代碼如下:
      //******* IBusiness.java**************
      }
      (2)任何想要使用數(shù)據(jù)庫實例的類都必須實現(xiàn)這個接口,業(yè)務邏輯類Business實現(xiàn)這個接口IBusiness。Business.java的示例代碼如下:
      //******* Business.java************** 
                         this.db = db; 
               } 
               …… 
               //根據(jù)注入的數(shù)據(jù)庫類,從×××數(shù)據(jù)庫中獲取數(shù)據(jù) 
               public void getData() { 
                         …… 
                         db.getData(); 
                         …… 
               }
      }
      (3)編寫測試類TestBusiness。TestBusiness.java的示例代碼如下:
      //******* TestBusiness.java**************
      public class TestBusiness { 
               private Business business = new Business(); 
               …… 
               //根據(jù)注入的數(shù)據(jù)庫類,從Oracle數(shù)據(jù)庫中獲取數(shù)據(jù) 
               public void getData() { 
                         …… 
                         business. createDI (new OracleDataBase()); 
                         business.getData(); 
                         …… 
               }
      }
      如果要完成依賴關系注入的對象,必須實現(xiàn)IBusiness接口。
      3.2.2  Set注入(setter injection)
      Set注入指的就是在接受注入的類中定義一個Set方法,并在參數(shù)中定義需要注入的元素。為了讓類Business接受DataBase的注入,需要為它定義一個Set方法來接受DataBase的注入。Business.java的示例代碼如下:
      //******* Business.java**************
      public class Business { 
               private DataBase db; 
               public void setDataBase(DataBase db) { 
                         this.db = db; 
               } 
               …… 
               //根據(jù)注入的數(shù)據(jù)庫類,從×××數(shù)據(jù)庫中獲取數(shù)據(jù) 
               public void getData() { 
                         …… 
                         db.getData(); 
                         …… 
               }
      }
      更詳細的代碼,可以參看3.1節(jié)的第二個例子,采用的就是Set注入的方式。
      3.2.3  構造注入(constructor injection)
      構造注入指的就是在接受注入的類中定義一個構造方法,并在參數(shù)中定義需要注入的元素。為了讓類Business接受DataBase的注入,需要為它定義一個構造方法,來接受DataBase的注入。Business.java的示例代碼如下:
      //******* Business.java**************
      public class Business { 
               private DataBase db; 
               public Business (DataBase db) { 
                         this.db = db; 
               } 
               …… 
               //根據(jù)注入的數(shù)據(jù)庫類,從×××數(shù)據(jù)庫中獲取數(shù)據(jù) 
               public void getData() { 
                         …… 
                         db.getData(); 
                         …… 
               }
      }

      分享:總結Hibernate經(jīng)驗
      0、雙向關聯(lián)中最好是設置一端inverse=true,一端inverse=false。一般inverse=false會放在多的一端,即由多的一方來維護關系,并在多的一方設置cascade=save-update,在單的一方設置cascade=all。 1、使用Hibernate的idgenerator來生成無業(yè)務意義的主鍵

      來源:模板無憂//所屬分類:JSP教程/更新時間:2010-01-31
      相關JSP教程