記事ディレクトリ
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 は名前に基づいて検索されます。