春季2.5,
我有一个类StockDwrStockDwr它是一个具有原型范围的豆名称库存
在这个类中,我有一个带有@Autowired批注的属性ModRepository
ModRepository仅由此类
使用在这个课程中我只有那个(因为我试图找到问题)
public void read(String fileName) {
System.out.println(fileName);
}
当我去使用股票的jsp时我得到了
创建名为“stock”的bean时出错:字段自动装配失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配字段:private com.domain.ModRepository com.web.StockDwr.modRepository;嵌套异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义[com.domain.ModRepository]类型的唯一bean:类型[com.domain.ModRepository]的不满意依赖:期望至少有一个匹配的bean
我没有在xml文件中定义ModRepository,我试图这样做,但它得到了同样的问题
任何想法?
答案 0 :(得分:2)
您收到错误是因为Spring不了解您的ModRepository对象。为了自动装配东西,spring必须知道那是什么东西。你说你试图在你的应用程序上下文xml中定义ModRepository,但仍然得到相同的错误。在这种情况下,您必须错误地定义它,因为这正是您必须要做的。
答案 1 :(得分:2)
可能你在xml文件中为ModRepository做了错误的bean定义。 spring无法找到bean com.domain.ModRepository
自动装配按类型进行。你的ModRepository实现了一些接口吗?在这种情况下,如果有很多实现,spring将无法唯一地标识bean。
避免使用@Qualifier注释。限定符确保自动装配按名称发生。
或者,您可以尝试使用注释,将@Component置于ModRepository类之上 并确保在applicationContext.xml
中有这两行 <context:annotation-config />
<context:component-scan base-package="com.domain" />
答案 2 :(得分:1)
我假设您已配置
<context:component-scan base-package="..."/>.
如果没有@Component注释,Spring无法知道哪个类是它应该跟踪的组件。
答案 3 :(得分:-1)
@Autowired using annotations
@Repository(“ExampleDao”)公共类ExampleDaoImpl实现了ExampleDao
@Service(“ServiceExample”)公共类ExampleServiceImpl实现ExampleService
@Controller public class ExampleController
@Autowired private ExmpleService ServiceExample;