04 - 春の依存性注入

、春の依存性注入

  1. 依存性注入:
    • 依存性注入
  2. IOCの役割:
    • プログラム間のカップリング(依存関係)を低減
  3. 依存関係の管理関係:
    • 結局スプリングのメンテナンスに来ます
    • 私たちのために春が提供する他のクラスのオブジェクトを使用するには、現在のクラスが必要で、私たちは、構成ファイルで説明する必要があります
  4. 依存性の関係を維持します:
    • 依存性の注入が呼び出されます
  5. 依存性注入:
    • あなたは、データを挿入することができますの3つのタイプがあります。
      1. 基本タイプと文字列
      2. (コンフィギュレーションファイルまたはコンフィギュレーションノート持っていた豆)他のBeanタイプ
      3. 複合型/コレクション型
    • 注入方法:3があります。
      1. 提供コンストラクタを使用して
      2. 提供するために、setメソッドを使用して
      3. 提供されたアノテーションを使用してください

第二に、コンストラクタ・インジェクション

一般的にはありません

ラベルに適応:コンストラクタ-Argの

場所タグが表示されます:豆内部のラベルを

タグの属性:

タイプ:注入されるデータのデータ型を指定し、データ・タイプは、特定のパラメータまたはタイプの構成の関数です。

インデックス:コンストラクタを与えられたパラメータの割り当てを指定したインデックス位置を指定するために使用されるデータを注入します。最初から場所パラメータインデックス。

名前:パラメータの割り当ての名前を指定するには、設定パラメータを指定するために使用されます。

そのパラメータの割り当てのためのコンストラクタに割り当てられ=============================== 3以上====== ====================

値:基本タイプとデータ型を提供するための文字列

REF:指定されたデータのための他のBeanタイプ。Beanオブジェクトを有し、それはスプリングIOCコアコンテナに表示する意味

利点:

Beanオブジェクトを取得する場合、データを注入それ以外のオブジェクトが正常に作成することができない、必見です。

短所:

以下、このデータも提供されなければならないならば、我々は、オブジェクトを作成するときになるように、Beanオブジェクトを変更する方法の例

コンストラクタAccountServiceImpl 1.実装クラス

public class AccountServiceImpl implements IAccountService {

    //如果是经常变化的数据,并不适用于注入的方式
    private String name;
    private Integer age;
    private Date birthday;

    public AccountServiceImpl(String name, Integer age, Date birthday) {
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    public void saveChange() {
        System.out.println("保存了"+name+","+age+","+birthday);
    }
}

2.bean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <bean id="accountService" class="com.service.impl.AccountServiceImpl">
        <constructor-arg type="java.lang.String" name="name" value="test"/>
        <constructor-arg name="age" value="18"/>
        <constructor-arg name="birthday" ref="now"/>
    </bean>

    <!--配置一个日期对象-->
    <bean id="now" class="java.util.Date"/>
</beans>

三、設定注入法(より一般的な)

設定方法は、より一般的に使用されています

ラベルの関与:プロパティ

場所が表示されます:豆内部のラベルを

タグの属性:

名前:パラメータの割り当ての名前を指定するには、設定パラメータを指定するために使用されます。

注:属性名の名前がここにはありませんが、のsetNameメソッド名

値:基本タイプとデータ型を提供するための文字列

REF:指定されたデータのための他のBeanタイプ。Beanオブジェクトを有し、それはスプリングIOCコアコンテナに表示する意味

利点:

あなたがオブジェクトを作成するとき、あなたはデフォルトのコンストラクタを使用することができます明確な制限はありません

短所:

メンバーが値を持っている必要がありますがある場合は、行われていないオブジェクトのセット方法を得ることが可能です

1.実装クラスAccountServiceImpl2

public class AccountServiceImpl2 implements IAccountService {
    private String name;
    private Integer age;
    private Date birthday;

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public void saveChange() {
        System.out.println("保存了"+name+","+age+","+birthday);
    }
}

2. bean.xml

    <bean id="accountService2" class="com.service.impl.AccountServiceImpl2">
        <property name="name" value="卡兹克"/>
        <property name="age" value="19"/>
        <property name="birthday" ref="now"/>
    </bean>

第四に、複合型注入/コレクション型注入

リスト構造は、タグセットを注入するために使用します:

  1. リスト構造は、タグセットを注入するために使用します:
    • ・リストアレイセット
  2. 射出タグセット構造のための地図:
    • 地図の小道具
  3. 同じ構成、ラベルを交換することができます

1.AccountServiceImpl3

public class AccountServiceImpl3 implements IAccountService {
    private String[] myStrings;
    private List<String> myList;
    private Set<String> mySet;
    private Map<String,String> myMap;
    private Properties myProps;

    public void setMyStrings(String[] myStrings) {
        this.myStrings = myStrings;
    }

    public void setMyList(List<String> myList) {
        this.myList = myList;
    }

    public void setMySet(Set<String> mySet) {
        this.mySet = mySet;
    }

    public void setMyMap(Map<String, String> myMap) {
        this.myMap = myMap;
    }

    public void setMyProps(Properties myProps) {
        this.myProps = myProps;
    }

    public void saveChange() {
        System.out.println(Arrays.toString(myStrings));
        System.out.println(myList);
        System.out.println(mySet);
        System.out.println(myMap);
        System.out.println(myProps);
    }
}

2.bean.xml

    <bean id="accountService2" class="com.service.impl.AccountServiceImpl2">
        <property name="name" value="卡兹克"/>
        <property name="age" value="19"/>
        <property name="birthday" ref="now"/>
    </bean>

    <bean id="accountService3" class="com.service.impl.AccountServiceImpl3">
        <property name="myStrings">
            <array>
                <value>aaa</value>
                <value>bbb</value>
                <value>ccc</value>
            </array>
        </property>
        <property name="myList">
            <list>
                <value>aaa</value>
                <value>bbb</value>
                <value>ccc</value>
            </list>
        </property>
        <property name="mySet">
            <set>
                <value>aaa</value>
                <value>bbb</value>
                <value>ccc</value>
            </set>
        </property>

        <property name="myMap">
            <map>
                <entry key="testA" value="aaa"/>
                <entry key="testB" value="bbb"/>
                <entry key="testC">
                    <value>ccc</value>
                </entry>
            </map>
        </property>

        <property name="myProps">
            <props>
                <prop key="testA">aaa</prop>
                <prop key="testB">bbb</prop>
            </props>
        </property>
    </bean>

おすすめ

転載: www.cnblogs.com/zuiren/p/11415417.html