1. 程式人生 > >依賴注入(Dependency Injection)的三種方式

依賴注入(Dependency Injection)的三種方式

為了對程式碼進行簡化,在得到dao時不必每次都寫出拿到dao的方法,可以使用依賴注入的方式.

依賴注入有2種方式:

1.基於setXX的方式:判斷有無setXX的方法,如果有,則將xx物件注入

具體程式碼:

public static void diDao(Object object) {
  Method[] methods = object.getClass().getDeclaredMethods();
  try {
   for(Method m:methods) {
    String methodName = m.getName();
    if(methodName.startsWith("set")) {
     methodName = methodName.substring(3);
     methodName = methodName.substring(0,methodName.length()-3);
     methodName = methodName.toLowerCase();
     Object obj = DaoUtil.createDaoFactory().getDao(methodName);
     m.invoke(object, obj);
    }
   }
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  } catch (IllegalArgumentException e) {
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   e.printStackTrace();
  }
 }

該方式的缺點:當有其它非getXXDao方法時,該方式就會找不到對應的物件,執行時會報錯.

2.基於annotation的方式: anootation相當於一個標籤,當某個方法被貼上了這個標籤,就將xx物件注入

具體程式碼:

public static void diDao(Object object) {
  Method[] methods = object.getClass().getDeclaredMethods();
  try {
   for(Method m:methods) {
    if(m.isAnnotationPresent(ShopDi.class)) {
     ShopDi sd = m.getAnnotation(ShopDi.class);
     String value = sd.value();
     if(value == null || "".equals(value.trim())) {
      value = m.getName().substring(3);
      value = value.substring(0,value.length()-3).toLowerCase();
     }
     Object obj = DaoUtil.createDaoFactory().getDao(value);
     m.invoke(object, obj);
    }
   }
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  } catch (IllegalArgumentException e) {
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   e.printStackTrace();
  }
 }

3.除了這2種方式外,還可以寫一個properties檔案,列出所有需要進行依賴注入的方法,比較繁瑣,不予考慮



相關推薦

依賴注入(Dependency Injection)的方式

為了對程式碼進行簡化,在得到dao時不必每次都寫出拿到dao的方法,可以使用依賴注入的方式. 依賴注入有2種方式: 1.基於setXX的方式:判斷有無setXX的方法,如果有,則將xx物件注入 具體程式碼: public static void diDao(Object o

依賴注入(DI)的實現方式

本文來探討一下依賴注入的三種實現方式是哪三種,Spring的支援又怎麼樣。 首先,依賴注入(DI)的實現方式有三種:設值注入、構造方法注入、介面注入,下面來看看這三種注入方式在Spring中的支援怎麼

spring注入bean的方式

1、自動化裝配bean 元件裝配:Spring會自動發現應用上下文所建立的bean。 自動裝配:Spring自動滿足bean之間的依賴 在類上加入@Component註解,告訴spring為這個類建立bean 使用@Autowired註解實現自動裝配,也可以使用java規範的@Inj

簡明依賴注入(Dependency Injection)

前言 這是因特奈特上面不知道第幾萬篇講依賴注入(Dependency Injection)的文章,但是說明白的卻寥寥無幾,這篇文章嘗試控制字數同時不做大多數。 首先,依賴注入的是一件很簡單的事情。 為什麼需要依賴注入 然後,假設我們有一個汽車Car,一個引擎介面Engine,兩個引擎具體實現Level

理解依賴注入(Dependency Injection)

我們通過一個示例來解釋為什麼使用使用者服務定位器和依賴注入。首先,假設我們正在開發一個元件,叫SomeComponent。它執行的內容現在還不重要,我們的元件需要依賴資料庫的連線。 在下面第一個例子中,資料庫的連線是在元件內部建立的。這種方法是不實用的;事實上這

BeanFactory和它的物件註冊和依賴繫結的方式

一、Spring中的BeanFactory是什麼?   BeanFactory是個基本的IoC容器,提供完整的IoC服務支援,負責物件建立的管理和依賴注入服務   如果沒有特殊指定,預設採用延遲初始化策略(lazy-load)。只有當客戶端物件需要訪問容器中的某個受管物件

依賴注入 Dependency Injection (DI)

依賴注入  Dependency Injection (DI) 如果是第一次接觸這個概念,可能會一時沒有頭緒,網上的各種解釋可能讓你更加混亂,當看到下面那段例項程式碼你可能不相信它就這麼簡單。其實依賴注入本身是單純、簡單的。 你可以直接略過其他直接看例項程式碼! 設計原則

Spring依賴注入常用的兩方式

Spring中依賴注入:定義物件之間的彼此依賴,常用的兩種注入方式:setter方法和構造器 1、setter方法:在容器中宣告變數並插入對應setter和getter方法,在對應xml文件中配置,程

依賴注入Dependency Injection(一)

Let's say we have a CustomerEditScreen that needs to load a Customer entity by ID from a web servi

sping_依賴註入的方式

str 屬性 -name .project 必須 array list per div 1. set註入:通過setxxx()給屬性賦值 <!--id是對象--> <!--class是類--> <bean id = "stu

依賴注入方式

Spring通過DI(依賴注入)實現IOC(控制反轉),常用的注入方式主要有三種:構造方法注入,setter注入,基於註解的注入。構造方法注入先簡單看一下測試專案的結構,用maven構建的,四個包:entity:儲存實體,裡面只有一個User類dao:資料訪問,一個介面,兩個

【SSH三大框架】Spring基礎第二篇:Spring依賴注入方式

控制反轉(Inversion of Control)和依賴注入(Dependency Injection):應用控制反轉,物件在被建立的時候,由一個調控系統內所有物件的外界實體將其所依賴的物件的引用傳遞給它。也可以說,依賴被注入到物件中。所以,控制反轉是,關於一個物件如何獲

Spring 依賴注入方式的實現,及迴圈依賴問題的解決(原始碼+XML配置)

搬磚啦,搬磚啦,這幾天在看Spring相關的書,下面給大家分享一下這幾天的心得與收穫,Go Go Go! Spring支援兩種依賴注入方式,分別是屬性注入,建構函式注入。除此之外,Spring還支援工廠注入方式。 接下來,我們一起來了解一下Spring的幾種注入方式。

Spring依賴注入方式

Spring支援兩種依賴注入方式,分別是屬性注入和建構函式注入。除此之外,Spring還支援工廠方法注入。 1.屬性注入 實體類Car,有三個屬性 public class Car { private int maxSpeed; pr

IOC與DI的講解以及依賴注入方式

首先:第一個問題,參與者都有誰?1)物件2)IOC/DI容器3)某個物件的外部資源第二問題:依賴,誰依賴誰?為什麼需要依賴?依賴嘛,很好理解的,物件依賴於IOC/DI容器,至於為什麼要依賴呢?物件需要IOC/DI容器來提供物件需要的外部資源。第三個問題:注入,誰注入誰?又注入了什麼呢?顯而易見是IOC/DI容

Spring靜態注入方式

Spring靜態注入的三種方式: (說明:MongoFileOperationUtil是自己封裝的一個Mongodb檔案讀寫工具類,裡面需要依賴AdvancedDatastore物件例項,dsForRW用來獲取Mongodb資料來源) 在springframework裡,我們不能@Autowir

AndroidStudio中新增依賴方式以及如何引入so檔案和arr檔案

轉載自:http://blog.csdn.net/zxc514257857/article/details/56534863 前言   AndroidStudio中新增依賴的三個選項,如圖:   分別為:庫依賴(Library dependency)、檔案依賴(

Spring boot 梳理 - SpringBoot中注入ApplicationContext物件的方式

直接注入(Autowired) @Configuration public class OAConfig { @Autowired private ApplicationContext applicationContext; @B

Spring Spring 靜態屬性 注入方式

Spring靜態注入的三種方式: (說明:MongoFileOperationUtil是自己封裝的一個Mongodb檔案讀寫工具類,裡面需要依賴AdvancedDatastore物件例項,dsForRW用來獲取Mongodb資料來源) 在springframewo

springboot物件注入IOC容器的方式

Springboot會自動載入resources檔案下面的application.yml或者application.properties配置檔案,因為yml格式可以替代xml格式,功能properties更強大,所以一般都使用yml格式進行書寫。 1.對於yml中載入了的b