在春季2.5,
我上了一堂StockDwr
StockDwr是具有原型范围的Bean名称股票
在此类中,我具有带有@Autowired批注的属性ModRepository
ModRepository仅由此类使用
在这个班上我只有那个(因为我试图找到问题所在)
public void read(String fileName) {
System.out.println(fileName);
}
当我去使用股票的jsp时,我得到
创建名称为“ stock”的bean时出错:字段的自动装配失败;嵌套的异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有com.domain.ModRepository com.web.StockDwr.modRepository;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义[com.domain.ModRepository]类型的唯一bean:[com.domain.ModRepository]类型的不满足依赖性:至少需要1个匹配的bean
我没有在xml文件中定义ModRepository,但我尝试这样做,但是遇到了同样的问题
任何的想法?
最佳答案
可能是您在xml文件中为ModRepository定义了错误的bean。春季找不到bean com.domain.ModRepository
自动装配按类型进行。您的ModRepository实现是某些接口的吗?在这种情况下,如果有很多实现,spring将无法唯一地标识bean。
为了避免这种情况,请使用@Qualifier批注。限定符确保自动装配按名称进行。
或者,您可以尝试使用批注,将@Component放在ModRepository类的顶部
并确保在applicationContext.xml中有这两行
<context:annotation-config />
<context:component-scan base-package="com.domain" />