Heim >Java >javaLernprogramm >Was sind die drei Methoden der Spring-Abhängigkeitsinjektion?

Was sind die drei Methoden der Spring-Abhängigkeitsinjektion?

王林
王林Original
2020-04-29 13:26:136239Durchsuche

Was sind die drei Methoden der Spring-Abhängigkeitsinjektion?

Die drei Methoden der Spring-Abhängigkeitsinjektion (DI) sind:

1. Schnittstelleninjektion

2. Setter-Methodeninjektion

3. Konstruktormethodeninjektion

(Empfohlenes Video-Tutorial: Java-Video )

Lassen Sie mich Ihnen vorstellen, wie diese drei Arten der Abhängigkeitsinjektion in Spring realisiert werden.

Zuerst benötigen wir die folgenden Klassen:

Interface Login.java

Interface-Implementierungsklasse LoginImpl.java

Eine Verarbeitungsklasse LoginAction.java

Es gibt auch eine Testklasse TestMain.java

LoginImpl.java wie folgt:

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 unterscheidet sich je nach verwendeter Injektionsmethode geringfügig.

Schauen wir uns die Klasse LoginAction.java entsprechend der Injektionsmethode an

Injektion der Setter-Methode:

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;

}

}

definiert eine Login-Typvariable login, in LoginAction instanziiert die Anmeldung nicht, sondern nur die entsprechende Setter/Getter-Methode, da wir hier die Abhängigkeitsinjektionsmethode von Spring verwenden. Die

applicationContext.xml-Konfigurationsdatei lautet wie folgt:

<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>

Jetzt kann testMain.java ausgeführt werden und wir können sehen, dass „My Name Is fengyun“ auf der Konsole gedruckt wird.

OK, das ist die Injektion mit der Setter-Methode des Frühlings.

Konstruktormethodeninjektion

Wie der Name schon sagt, bedeutet Konstruktormethodeninjektion, dass wir uns auf die Konstruktionsmethode von LoginAction verlassen, um den Zweck von DI zu erreichen, wie unten gezeigt:

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);

}

}

Hier haben wir einen LoginAction-Konstruktor hinzugefügt

Die Konfigurationsdatei „applicationContext.xml“ lautet wie folgt:

<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>

Wir verwenden „constructorarg“ für die Konfiguration Reihenfolge der Parameter im Konstruktor. Wenn mehrere Parameter vorhanden sind, konfigurieren Sie

in der Reihenfolge von 0,1... Wir können jetzt testMain.java ausführen und das Ergebnis ist genau das gleiche wie bei Verwendung der Setter-Methode spritzen.

Eine Sache ist zu beachten: Wenn der Konstruktor mehrere Parameter hat, z. B. Parameter 1, Parameter 2 und Parameter 2, hängt er von Parameter 1 ab. In diesem Fall müssen Sie auf die Reihenfolge des Konstruktors achten , und der Parameter muss 1 sein, wird vor Parameter 2 platziert.

Lassen Sie uns weiter über Schnittstelleninjektion sprechen, die wir normalerweise nicht verwenden. Wir haben es wie folgt geändert:

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();

}

}

}

Die beiden am häufigsten verwendeten Injektionsmethoden sind Setter und Konstruktor.

Empfohlenes Tutorial:

Java-Einstiegsprogramm

Das obige ist der detaillierte Inhalt vonWas sind die drei Methoden der Spring-Abhängigkeitsinjektion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn