ホームページ  >  記事  >  Java  >  Spring Frameworkの学習(2) 依存関係の注入

Spring Frameworkの学習(2) 依存関係の注入

黄舟
黄舟オリジナル
2016-12-29 13:10:091315ブラウズ

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>

2) オブジェクトに値を代入します

オブジェクトのsetメソッドも提供します

public class User{
     private UserService userservice;
     public UserServicegetUserservice() {
          returnuser;
     }
     public void setUserservice(UserService userservice){
         this.userservice= userservice;
     }
}

設定ファイルにUserServiceのBeanラベル宣言とUserServiceへのUserオブジェクトの参照を追加します。

<!--对象的声明-->
<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>

この構成では、フレームワークは UserService オブジェクトを User クラスに挿入します。


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>

4) プロパティファイルのフィールドに値を割り当てます

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>

23ac7bbddc590263b57e27da10ea2cdf タグ内のキー値は名前です.properties プロパティ ファイル内


注:
どのような値が割り当てられているかに関係なく、構成ファイル内の 3fcb97bb666cd7884d4d3210fb47b5ef タグの name 属性値は、オブジェクト内の名前と一致している必要があります。


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>

2) コンストラクターのパラメーターが 2 つの場合

パラメーターが非文字列型の場合、型が設定ファイルで指定される必要があります。指定されていない場合は、String 型の割り当てに従います。
パラメータの型が一致しない場合、フレームワークは文字列の型に従って検索するため、設定ファイルでパラメータの場所を指定する必要があります

<constructor-argvalue="admin"index="0"></constructor-arg>                
<constructor-argvalue="23" type="int"index="1"></constructor-arg>

このように、コンストラクターでは、最初のパラメータは文字列型になります、 2 番目のパラメータは string 型です。各パラメータは int 型です


上記は Spring Framework の学習 (2) 依存関係注入の内容です。さらに関連する内容については、PHP の中国語 Web サイト ( www.php.cn)!



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。