我的 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:无法自动装配字段:受保护的布尔staffing.server.action.form.AbstractFormAction.closed;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项找到类型为 [boolean] 的匹配 bean:预计至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
似乎在抱怨它找不到字节布尔值的 bean。但是,当通过值而不是引用定义属性“关闭”时,为什么它会想要一个 bean?