Spring フレームワークは、セット注入、コンストラクター注入、インターフェイス注入という 3 つの注入方法を提供します。インターフェイスの注入は必要ありません。最初の 2 つの方法を以下に紹介します。
1.セットインジェクション
属性のsetメソッドを使って初期化することをセットインジェクションと呼びます。
1) 通常の文字型に値を割り当てます。
public class User{ privateString username; publicString getUsername() { returnusername; } publicvoid setUsername(String username) { this.username= username; } }
属性の set メソッドを指定するだけで済みます。その後、プロパティ ファイルに移動して、フレームワークが applicationContext.xml ファイルの Bean タグを見つけられるように設定します。 Bean ラベルを追加して Bean にラベルを付けます。ID とクラス値を指定します。ID 値は必須ではありません。クラス値はオブジェクトが配置されている完全なパスです。 property
タグを Bean タグに追加します。名前の値は、User クラスの対応するプロパティ名と一致する必要があります。 value value は、User クラスの username 属性に割り当てる値です。
<bean id="userAction"class="com.lsz.spring.action.User" > <property name="username" value="admin"></property> </bean>
オブジェクトのsetメソッドも提供します
public class User{ private UserService userservice; public UserServicegetUserservice() { returnuser; } public void setUserservice(UserService userservice){ this.userservice= 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>
3) リストコレクションに値を割り当てます
set メソッドも提供します
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>
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>
注:
どのような値が割り当てられているかに関係なく、構成ファイル内の
2 コンストラクターインジェクション
1) コンストラクターのパラメーターは 1 つです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>
パラメーターが非文字列型の場合、型が設定ファイルで指定される必要があります。指定されていない場合は、String 型の割り当てに従います。
パラメータの型が一致しない場合、フレームワークは文字列の型に従って検索するため、設定ファイルでパラメータの場所を指定する必要があります
<constructor-argvalue="admin"index="0"></constructor-arg> <constructor-argvalue="23" type="int"index="1"></constructor-arg>