スプリングの自動組立機構を詳しく解説

1. 手動組み立て

まず、Spring Assembly は何をするのでしょうか? 私の理解では、これは Bean 間の依存関係を解決する手段であると考えています。

たとえば、ここには People クラスと Dog クラスがあります。人は Dog に依存しています。つまり、人が犬を飼っている場合、人と犬の間には依存関係があります。これは誰もが知っています。IOC コンテナは、オブジェクトの作成と依存関係の維持を管理します。の場合、犬と人の間の依存関係は Spring コンテナーによって自然に管理されることになり、この依存関係を組み立てる必要があります。

この記事では主に自動組立について説明しますが、自動組立について説明する前に、手動組立がどのように行われるのかを比較してみると、自動組立がいかに複雑であるかが分かります。

①Entityクラスの準備、Peopleクラス、Dogクラス

ここに画像の説明を挿入します

ここに画像の説明を挿入します

② コア構成ファイルを作成し、Bean の依存関係を手動でアセンブルします。

<?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="dog" class="com.zxe.pojo.Dog"/>

    <bean id="people" class="com.zxe.pojo.People">
        <property name="name" value="栈老师"/>
        <property name="dog" ref="dog"/>
    </bean>

</beans>

可以看到,手动装配的 dog 依赖,是用 ref 引用的!

2. 自動組立

1.XML方式

このメソッドは主に autowire 属性を使用し、属性値には byName と byType が含まれます。次に byName を例にとると、エンティティ クラスは上記の People と Dog のままです。

① byNameメソッドでアセンブルする

<?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="dog" class="com.zxe.pojo.Dog"/>

    <bean id="people" class="com.zxe.pojo.People" autowire="byName">
        <property name="name" value="栈老师"/>
    </bean>

</beans>

ここに画像の説明を挿入します

ここで byName と byType の違いをさらに説明する必要があります:
① byName は名前が示すように、名前によって組み立てられます. Dog を People に注入するには、setDog メソッド名で犬を取り出し、それを検索する必要があります。コア構成。何を探していますか? ID 名が Dog の Bean を見つけ、見つけたら自動的に注入します注意从实体类里面拿到的这个 dog 一定是 set 后面的内容,并不是变量名。②
byType、タイプごとにアセンブルされ、People で Dog タイプを取り出し、設定ファイルでクラス Dog の Bean を見つけて、自動的に注入します。 bean 的类型肯定就不能一样了,否则无法找到

2. アノテーションの方法

もう 1 つの最も一般的に使用されるアセンブリ方法は、リフレクションを通じて実装されるアノテーション アセンブリです。

① アノテーションサポートをオンにし、<context:annotation-config/>

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd">

    <context:annotation-config/>
    <bean id="dog" class="com.zxe.pojo.Dog"/>

    <bean id="people" class="com.zxe.pojo.People">
        <property name="name" value="栈老师"/>
    </bean>

</beans>

② @Autowired アノテーションを使用して依存関係属性にアノテーションを付ける

ここに画像の説明を挿入します

アノテーション メソッドによって属性を組み立てるプロセス。デフォルトでは、@Autowired は属性のタイプに応じてコンテナ内の対応するコンポーネントを優先的に見つけ、見つかったときに値を割り当てます。同じタイプのコンポーネントが複数見つかった場合は、 @Autowired を @Qualifier と組み合わせて使用​​できます。 @Qualifier は名前に基づいて検索されます。

おすすめ

転載: blog.csdn.net/m0_52861684/article/details/132448985