@Requiredアノテーションを使用した春の依存性チェック
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ファイルの依存性チェックよりも柔軟性があります。これは、特定のプロパティのみに適用できるためです。