1. ホーム
  2. Java

スプリング】豆の自動組立

2022-02-24 20:59:14
<ブロッククオート

自動アセンブリは、SpringがBeanの依存関係を満たすための方法です!

Springは自動的にコンテキストを探し、自動的にプロパティをBeanに組み付けます!

Springでアセンブルする方法は3つあります。

<ブロッククオート
  • xmlで表示するコンフィグレーション
  • Javaでコンフィギュレーションを表示
  • Beanの暗黙の自動アセンブル [重要

1. アセンブリを表示します。

前回のブログで書いた表示方法。

2. 自動組立

  • 名前別 : 自身が持つオブジェクトの set メソッドの値に対応する bean-id をコンテナコンテキストから自動的に探します。

すべてのビーンIDが一意であり、ビーンが自動的に注入されたプロパティのセットメソッド値に一致する必要があることを確認する必要があります!

    <bean id="people" class="com.company.org.People" autowire="byName">
        <property name="name" value="Makemake"/>
    </bean>

  • タイプ別 : コンテナコンテキスト内で、自身のオブジェクトと同じプロパティタイプを持つBeanを自動的に探します( は、このタイプのオブジェクトが1つだけであることを確認する必要があります。 )

すべてのビーンのクラスが一意であり、このビーンが自動注入されるプロパティと一貫している必要があることを確認する必要があります

    <bean id="people" class="com.company.org.People" autowire="byType">
        <property name="name" value="Makemake"/>
    </bean>

  • 自動アセンブリのためのアノテーションの使用

JDK 1.5でアノテーションのサポートが開始され、Spring 2.5でアノテーションのサポートが開始されました。

アノテーションを使用する際の注意点。

1. 制約をインポートする。

2. アノテーションのサポートを設定する。

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

    <! -- Configuring annotation support -->
    <context:annotation-config/>

</beans>

オートワイアード

プロパティに直接使用する。(この自動組み立てされたプロパティがIOC(Spring)コンテナに存在し、byNameという名前と一致すれば、この時点でsetメソッドを省略することができる)

デフォルトでは依存オブジェクトが存在することを要求し、もしNULL値が許されるなら、そのrequired属性をfalseに設定することができます。

    @Autowired
    private Cat cat;
    @Autowired
    private Dog dog;

PS. Nullable : フィールドは、このアノテーションでマークされ、フィールドがヌルになる可能性があることを示します。

    @Autowired(required = false)
    private Cat cat;

Qualifier(value="xxx") : Autowiredの自動配線環境が複雑で、単一のアノテーション[@Autowired]で自動配線ができない場合、Qualifier(value="xxx")で@Autowiredの使用を設定し、注入する一意のBeanオブジェクトを指定します!この場合、Autowiredの使用はできません。

    @Autowired
    @Qualifier(value = "dog")
    private Dog dog;

リソース / @Resource(name ="xxx") . Resourceには、nameとtypeという2つの重要な属性があります。

まとめると、@Resourceと@Autowiredの違い。

  • すべて自動組立てに使用され、すべて属性フィールドに配置することができます。
  • @AutowiredはbyTypeによってのみ実装されます。
  • リソースはデフォルトでbaNameで実装され、名前が見つからない場合はbyTypeで実装されます。Spring は @Resource アノテーションの name 属性をビーンの名前に、type 属性をビーンのタイプに解決します。
  • 実装の順番が違う。AutowiredはbyTypeによって実装される。ResourceはデフォルトでbaNameの方法で実装されています。