Heim >Java >javaLernprogramm >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"> <constructorarg index="0" ref="login"></constructorarg> </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-EinstiegsprogrammDas 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!