Bean設定ファイルのSpringのリンク://spring/spring-properties-dependency-checking/[dependency checking]は、特定の型(プリミティブ、コレクションまたはオブジェクト)のすべてのプロパティが設定されていることを確認するために使用されます。ほとんどのシナリオでは、特定のプロパティが設定されていることを確認する必要がありますが、すべてのプロパティは設定されていません。

この場合、

@ Required

アノテーションが必要です。次の例を参照してください。

@必要な例

Customerオブジェクトは、setPerson()メソッドで@Requiredを適用して、personプロパティが設定されていることを確認します。

package com.mkyong.common;

import org.springframework.beans.factory.annotation.Required;

public class Customer
{
    private Person person;
    private int type;
    private String action;

    public Person getPerson() {
        return person;
    }
    @Required
    public void setPerson(Person person) {
        this.person = person;
    }
}

@Requiredアノテーションを適用するだけでプロパティのチェックが行われるわけではなく、

RequiredAnnotationBeanPostProcessor

を登録してBeanコンフィグレーションファイルの@Requiredアノテーションを認識する必要があります。

RequiredAnnotationBeanPostProcessorは2つの方法で有効にすることができます。

1. <context:annotation-config/>をインクルードします.

Bean設定ファイルにSpringコンテキストと<context:annotation-config/>を追加します。

<beans
    ...
    xmlns:context="http://www.springframework.org/schema/context"
    ...
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    ...
    <context:annotation-config/>
    ...
</beans>

完全な例、

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

    <context:annotation-config/>

    <bean id="CustomerBean" class="com.mkyong.common.Customer">
        <property name="action" value="buy"/>
        <property name="type" value="1"/>
    </bean>

    <bean id="PersonBean" class="com.mkyong.common.Person">
        <property name="name" value="mkyong"/>
        <property name="address" value="address ABC"/>
        <property name="age" value="29"/>
    </bean>

</beans>

2. RequiredAnnotationBeanPostProcessorをインクルードします.

Bean構成ファイルに「RequiredAnnotationBeanPostProcessor」を直接組み込みます。

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

<bean
class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>

    <bean id="CustomerBean" class="com.mkyong.common.Customer">
        <property name="action" value="buy"/>
        <property name="type" value="1"/>
    </bean>

    <bean id="PersonBean" class="com.mkyong.common.Person">
        <property name="name" value="mkyong"/>
        <property name="address" value="address ABC"/>
        <property name="age" value="29"/>
    </bean>

</beans>

実行すると、personプロパティが設定されていないため、次のエラーメッセージがスローされます。

org.springframework.beans.factory.BeanInitializationException:
    Property 'person' is required for bean 'CustomerBean'

結論

@Required注釈を試してください。XMLファイルの依存性チェックよりも柔軟性があります。これは、特定のプロパティのみに適用できるためです。