注入IoC/DI-制御の逆転/依存性(2)


スプリング注入依存性による
  • @Autowired
  • @Resource
  • @Autowiredによる属性の注入

    [コード]
    運転手は総合ショッピングモールで車を買うように要求した.
    総合ショッピングモールで自動車を生産する.
    総合商城はタイヤを生産する.
    総合商城は自動車にタイヤを入れる.
    総合ショッピングモールは運転手に車を渡した.
  • 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" 
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
            
        <context:annotation-config />
        
        <bean id="tire" class="exSpringAutowired.KoreaTire"></bean>
        <bean id="americaTire" class="exSpringAutowired.AmericaTire"></bean>
        <bean id="car" class="exSpringAutowired.Car"></bean>
    </beans>
  • プロパティラベルが消えていることがわかります.
  • 自動接続により、carのプロパティを自動的に整理できます(依存性を自動的に注入します).コード
  • はスプリングフレーム
  • を反映する.
    package exSpringAutowired;
    
    import org.springframework.beans.factory.annotation.Autowired;
    
    public class Car {
        @Autowired
        Tire tire;
        
        public String getTireBrand() {
            return "장착된 타이어: " + tire.getBrand());
        }
    }
  • @Autowiredはタイプマッチングを行います.
    同じタイプのクラスが複数実装されている場合、beanタグのidを使用してマッチングします.
    すなわち,@Autowiredはtypeとidのtypeよりも優先的に実現される.
  • 整理機構

  • typeを実装する空はありますか?
    例:2
    No:No一致beanエラー

  • 文彬は一人ですか.
    例:オブジェクトに一意の空を割り当てる
    No:idに一致する空がありますか?(たとえば、オブジェクトに空を割り当てる/いいえ:no unique beanエラー)
  • DI仕上げ

  • 依存関係はnewに簡略化されているが,実際には変数に値を付与するすべての場所に依存関係がある.

  • すなわち,代入演算子(=)で変数に値を割り当てると依存関係が生じる.

  • 変数が領域変数、属性、または指定した値がテキストまたはオブジェクトであるかにかかわらず、依存関係が発生します.

  • 依存オブジェクトは、内部でも外部でも使用できます.

  • DIは外部依存オブジェクトの注入を意味する.

  • 依存オブジェクトを実装および配置する際には、SOLIDと凝集度の向上、結合度の低下の基本原則に従う必要があります.
    プロジェクトの実装とメンテナンスを容易にします.