久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Spring依賴注入的三種方式是什么

      Spring依賴注入的三種方式是什么

      Spring依賴注入(DI)的三種方式分別是:

      1、接口注入

      2、Setter方法注入

      3、構(gòu)造方法注入

      (視頻教程推薦:java視頻)

      下面來為大家介紹一下這三種依賴注入在Spring中是怎么樣實現(xiàn)的。

      首先我們需要以下幾個類:

      接口 Login.java

      接口實現(xiàn)類 LoginImpl.java

      一個處理類 LoginAction.java

      還有一個測試類 TestMain.java

      LoginImpl.java如下:

      package com.spring.test.di?  public class LoginImpl implements Login{  public String getName(){  return "fengyun"?  }  }  TestMain.java  package com.spring.test.di?  import org.springframework.context.ApplicationContext?  import org.springframework.context.support.FileSystemXmlApplicationContext?  public class TestMain {  /**  * @param args  */  public static void main(String[] args) {// 得到ApplicationContext對象  ApplicationContext ctx = new FileSystemXmlApplicationContext(  "applicationContext.xml")?  // 得到Bean  LoginAction loginAction = (LoginAction) ctx.getBean("loginAction")?  loginAction.execute()?  }  }

      LoginAction.java 會根據(jù)使用不同的注入方法而稍有不同。

      下面按照注入的方法來看LoginAction.java類

      Setter方法注入:

      package com.spring.test.di?  public class LoginAction {  private Login login?  public void execute() {  String name = login.getName()?  System.out.print("My Name Is " + name)?  }  /**  * @return the login  */  public Logic getLogin() {  return login?  }  /**  * @param login  * the login to set  */  public void setLogin(Login login) {  this.login = login?  }  }

      定義了一個Login 類型的變量 login, 在LoginAction并沒有對login 進(jìn)行實例化,而只有他對應(yīng)的setter/getter方法,因為我們這里使用的是Spring的依賴注入的方式。

      applicationContext.xml配置文件如下:

      <bean id="login" class="com.spring.test.di.LoginImpl"/> <bean id="loginAction" class="com.spring.test.di.LoginAction"> <property name="login" ref="login"></property> </bean>

      現(xiàn)在可以運行testMain.java了,我們可以看到控制臺打出了 My Name Is fengyun。

      OK了,這就是spring的setter方法注入。

      構(gòu)造方法注入

      顧名思義,構(gòu)造方法注入,就是我們依靠LoginAction的構(gòu)造方法來達(dá)到DI的目的,如下所示:

      LoginAction.java  package com.spring.test.di?  public class LoginAction {  private Login login?  public LoginAction(Login login) {  this.login = login?  }  public void execute() {  String name = login.getName()?  System.out.print("My Name Is " + name)?  }  }

      這里我們添加了一個LoginAction的構(gòu)造方法

      applicationContext.xml配置文件如下:

      <bean id="login" class="com.spring.test.di.LoginImpl"/> <bean id="loginAction" class="com.spring.test.di.LoginAction"> <constructor-arg index="0" ref="login"></constructor-arg> </bean>

      我們使用constructor-arg來進(jìn)行配置, index屬性是用來表示構(gòu)造方法中參數(shù)的順序的,如果有多個參數(shù),則按照順序,從 0,1…來配置

      我們現(xiàn)在可以運行testMain.java了,結(jié)果跟使用Setter方法注入完全一樣。

      其中需要注意一點有:構(gòu)造函數(shù)有多個參數(shù)的話,如:參數(shù)1,參數(shù)2,而參數(shù)2依賴于參數(shù)1,這種情況則要注意構(gòu)造函數(shù)的順序,必須將參數(shù)1放在參數(shù)2之前。

      下面繼續(xù)說說我們不常用到的接口注入,還是以LoginAction為例,我們對他進(jìn)行了修改,如下所示:

      LoginAction.java  package com.spring.test.di?  public class LoginAction {  private Logic login?  public void execute() {  try {  Object obj = Class.forName("com.spring.test.di.LoginImpl")  .newInstance()?  login = (Login) obj?  String name = login.getName()?  System.out.print("My Name Is " + name)?  } catch (Exception e) {  e.printStackTrace()?  }  }  }

      配置文件:

      <bean id="logic" class="com.spring.test.di.LoginImpl"/> <bean id="loginAction" class="com.spring.test.di.LoginAction"> </bean>

      工作中最常用就是Setter和構(gòu)造函數(shù)這兩種注入方法。

      推薦教程:java入門程序

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號