Abhängigkeitsinjektionsmethode beim Spring Control Flipping
Abhängigkeitsinjektion bedeutet, dass die Steuerung der Beziehung zwischen Objekten gesteuert wird by Der Anwendungscode wird in den externen Container übertragen. Das Spring-Framework bietet hauptsächlich zwei Abhängigkeitsinjektionsmethoden: Set-Injektion und Konstruktor-Injektion.
1: Set-Injektion bezieht sich auf die Definition einer Set-Methode des Typs, der in die Klasse, die die Injektion akzeptiert, injiziert werden soll, und auf die Definition der Notwendigkeit der Injektion in den Parametern Elemente. Set-Injection ist eine direkte Methode zum Zusammenstellen von Bean-Eigenschaften. Ein Nachteil der Set-Injection besteht jedoch darin, dass davon ausgegangen wird, dass über die Set-Methode auf alle variablen Eigenschaften zugegriffen werden kann, und dass nicht klar angegeben werden kann, welche Eigenschaften erforderlich und welche optional sind.
2: Konstruktorinjektion besteht darin, eine Konstruktormethode in der Klasse zu definieren, die die Injektion empfängt, und die Parameter zu definieren, die in die Konstruktormethode injiziert werden müssen. Der Vorteil der Konstruktorinjektion besteht darin, dass Abhängigkeiten durch Konstruktoren erzwungen werden.
Hier sind zwei Möglichkeiten, es zu verwenden:
1: In Myeclipse (der Autor verwendet die Myeclipse10-Version) Erstellen Sie ein neues Projekt (entweder Java-Projekt oder Webprojekt)
2: Klicken Sie mit der rechten Maustaste auf das Projekt – MyEclipse – Spring-Funktionen hinzufügen (Spring-Unterstützung hinzufügen), wählen Sie Version 3.0 aus und fügen Sie die Referenz hinzu Klicken Sie in der Kernklassenbibliothek auf Weiter
Drei: Erstellen Sie eine neue Spring Bean-Konfigurationsdatei und legen Sie sie im Projekt-SRC-Verzeichnis ab.
Viertens: Klicken Sie auf „Weiter“, geben Sie die Konfigurationsseite für den Ruhezustand direkt als Standard an und klicken Sie auf „Fertig stellen“.
Fünf: Erstellen Sie eine neue Klasse HelloWorld.java
package com.xiami.spring; public class HelloWorld { private String str; /** * 默认构造方法 */ public HelloWorld() { } /** * 用来进行构造注入的构造方法 * * @param str */ public HelloWorld(String str) { this.str = str; } /** * 用来进行Set注入的方法 * @param str */ public void setStr(String str) { this.str = str; } /** * 输出字符串的方法 */ public void sayHello() { System.out.println(str); } }
Sechs: Erstellen Sie eine neue Testklasse Test.java
package com.xiami.spring; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //载入spring配置文件 BeanFactory bFactory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); HelloWorld helloWorld = (HelloWorld) bFactory.getBean("helloService"); helloWorld.sayHello(); } }
Sieben: Zu diesem Zeitpunkt ist die Projektstruktur wie folgt
Acht: Öffnen Sie die Datei applicationContext.xml und fahren Sie fort. Bean-Konfiguration hinzufügen
Es gibt zwei Möglichkeiten, Beans hinzuzufügen:
1: Konfiguration der Bean-Klasse in der Set-Injektionsmethode verwenden
Klicken Sie mit der rechten Maustaste auf die Bearbeitungsoberfläche von applicationContext.xml - Spring - Neues Bean. Öffnen Sie das Bean-Assistentenfenster und geben Sie die Bean-ID (benutzerdefiniert) ein. Der Name entspricht getBean("???") in Test.java. Wählen Sie die einzuschleusende HelloWorld-Klasse aus. Klicken Sie auf die Registerkarte Eigenschaften, um eine neue Eigenschaft zu erstellen für die Bean. Neun: Geben Sie im Attribut-Assistentenfenster den Namen ein, der dem Attributnamen in HelloWorld.java entspricht, wählen Sie einen Wert für Spring Type, wählen Sie String für Type und geben Sie einen beliebigen Wert für Value
ein. Zehn: Speichern Sie applicationContext.xml. Die Konfigurationsdatei hat eine rote Markierung, um sie zu testen und festzustellen, dass die Zeichenfolge „Hallo Welt“ vorhanden ist wurde in die str-Variable injiziert.
2: Bean Klasse mit Konstruktor-Injection-Konfiguration
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 使用Set方式注入 --> <!-- <span style="color:#ff0000;"><bean id="helloService" class="com.xiami.spring.HelloWorld" abstract="false" lazy-init="default" autowire="default"> <property name="str"> <value type="java.lang.String">hello world</value> </property> </bean></span> --> <!-- 使用构造方法方式注入 <bean id="helloService" class="com.xiami.spring.HelloWorld" abstract="false" lazy-init="default" autowire="default"> <constructor-arg> <value type="java.lang.String">构造方法注入方式</value> </constructor-arg> </bean> --> </beans>
Wählen Sie im Bean Wizard-Fenster im obigen Set-Modus nicht die Registerkarte „Eigenschaften“, sondern ändern Sie sie in die Registerkarte „Konstruktor-Argumente“ und Fügen Sie eine neue hinzu. Der Index und die Java-Klasse müssen nicht ausgefüllt werden. Elf
: Beim Hinzufügen einer Konstruktor-Bean müssen Sie sie zuerst kommentieren oder löschen. Mehrere Beans mit derselben ID sind nicht zulässigDas obige ist der detaillierte Inhalt vonDetaillierte Beispiele der beiden Injektionsmethoden von Spring (Satz und Konstruktion). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!