Das Spring Framework bietet uns drei Injektionsmethoden: Set-Injektion, Konstruktor-Injektion und Schnittstellen-Injektion. Eine Schnittstelleninjektion ist nicht erforderlich. Die ersten beiden Methoden werden im Folgenden vorgestellt.
1, Injektion festlegen
Verwenden Sie zum Initialisieren die Set-Methode des Attributs, die als Set-Injektion bezeichnet wird.
1) Weisen Sie allgemeinen Zeichentypen Werte zu.
public class User{ privateString username; publicString getUsername() { returnusername; } publicvoid setUsername(String username) { this.username= username; } }
Wir müssen nur die Set-Methode des Attributs bereitstellen und dann zur Eigenschaftendatei gehen, um sie zu konfigurieren, damit das Framework das Beans-Tag der Datei applicationContext.xml finden kann. Bean-Tag zu Tag-Beans hinzufügen,
ID und Klassenwert angeben, ID-Wert ist nicht erforderlich, Klassenwert ist der vollständige Pfad, in dem sich das Objekt befindet. Fügen Sie dem Bean-Tag das Tag property
hinzu. Der Namenswert muss mit dem entsprechenden Eigenschaftsnamen in der Benutzerklasse übereinstimmen. Der Wertwert ist der Wert, den wir dem Benutzernamenattribut in der Benutzerklasse zuweisen möchten.
<bean id="userAction"class="com.lsz.spring.action.User" > <property name="username" value="admin"></property> </bean>
2) Weisen Sie dem Objekt einen Wert zu
Stellen Sie außerdem die Set-Methode des Objekts bereit
public class User{ private UserService userservice; public UserServicegetUserservice() { returnuser; } public void setUserservice(UserService userservice){ this.userservice= userservice; } }
Fügen Sie in der Konfigurationsdatei die Bean-Label-Deklaration von UserService hinzu und die Referenz des Benutzerobjekts auf UserService.
<!--对象的声明--> <bean id="userService" class="com.lsz.spring.service.UserService"></bean> <bean id="userAction"class="com.lsz.spring.action.User" > <property name="userservice" ref="userService"></property> </bean>
Mit dieser Konfiguration fügt das Framework das UserService-Objekt in die User-Klasse ein.
3) Weisen Sie der Listensammlung Werte zu
stellt auch die Set-Methode bereit
public class User{ privateList<String> username; publicList<String> getUsername() { returnusername; } publicvoid setUsername(List<String> username) { this.username= username; } }
<bean id="userAction"class="com.lsz.spring.action.User" > <propertyname="username"> <list> <value>zhang,san</value> <value>lisi</value> <value>wangwu</value> </list> </property> </bean>
4) Weisen Sie den Feldern in der Eigenschaftendatei Werte zu
public class User{ privateProperties props ; publicProperties getProps() { returnprops; } publicvoid setProps(Properties props) { this.props= props; } }
<bean> <propertyname="props"> <props> <propkey="url">jdbc:oracle:thin:@localhost:orl</prop> <propkey="driverName">oracle.jdbc.driver.OracleDriver</prop> <propkey="username">scott</prop> <propkey="password">tiger</prop> </props> </property> </bean>
Der Schlüsselwert im
Hinweis:
Egal welcher Wert zugewiesen ist, der Name Der Attributwert des
2 Konstruktorinjektion
1) Der Konstruktor hat einen Parameter
public class User{ privateString usercode; publicUser(String usercode) { this.usercode=usercode; } }
<bean id="userAction"class="com.lsz.spring.action.User"> <constructor-argvalue="admin"></constructor-arg> </bean>
2) Wenn der Konstruktor zwei Parameter hat
Wenn der Parameter nicht vorhanden ist Bei Verwendung des String-Typs muss der Typ in der Konfigurationsdatei angegeben werden. Wenn der Typ nicht angegeben ist, wird der Wert entsprechend dem String-Typ zugewiesen.
Wenn die Parametertypen inkonsistent sind, sucht das Framework nach dem Typ der Zeichenfolge, sodass der Speicherort des Parameters in der Konfigurationsdatei angegeben werden muss
<constructor-argvalue="admin"index="0"></constructor-arg> <constructor-argvalue="23" type="int"index="1"></constructor-arg>
Dies wird im Konstruktor angegeben. 1. Der erste Parameter ist vom Typ String und der zweite Parameter vom Typ int.
Das Obige ist der Inhalt der Abhängigkeitsinjektion von Spring Framework Learning (2). Inhalt, achten Sie bitte auf die chinesische PHP-Website (www.php.cn)!