私の XML 構成には、次の Bean 定義が含まれています。
<bean id="abstractFormAction" class="staffing.server.action.form.AbstractFormAction" abstract="true" parent="baseAction">
<property name="volunteerSaver" ref="volunteerSaver"/>
<property name="emailSender" ref="emailSender"/>
<property name="closed" value="${form.closed}"/>
</bean>
<bean id="volunteerFormAction" class="staffing.server.action.form.VolunteerFormAction" parent="abstractFormAction">
<property name="captchaGenerator" ref="captcha"/>
</bean>
VolunteerFormAction が AbstactFormAction の具体的な実装であり、AbstactFormAction のプロパティを継承することを示します。
AbstractFormAction では、次のようにプロパティを宣言します。
@Autowired protected VolunteerSaver volunteerSaver;
@Autowired protected EmailSender emailSender;
@Autowired protected boolean closed;
デプロイしようとすると、次の例外が発生します。
org.springframework.beans.factory.BeanCreationException: 'volunteerFormAction' という名前の Bean の作成中にエラーが発生しました: 自動配線された依存関係の注入に失敗しました。ネストされた例外は org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected boolean staffing.server.action.form.AbstractFormAction.closed; です。ネストされた例外は org.springframework.beans.factory.NoSuchBeanDefinitionException: 依存関係に一致するタイプ [boolean] の Bean が見つかりません: この依存関係のオートワイヤー候補として適格な少なくとも 1 つの Bean が必要です。依存関係アノテーション: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
byte boolean の bean が見つからないと文句を言っているようです。しかし、参照ではなく値でプロパティ 'closed' を定義した場合、なぜ Bean が必要なのでしょうか?