gpt4 book ai didi

java - bean 的 Autowiring 问题

转载 作者:行者123 更新时间:2023-12-01 19:15:46 26 4
gpt4 key购买 nike

使用 Spring 2.5,

我有一个StockDwr 类

StockDwr 这是一个具有原型(prototype)范围的 Bean 名称 Stock

在这个类中,我有一个带有 @Autowired 注释的属性 ModRepository

ModRepository 仅由此类使用

在这个类中我只有这个(因为我试图找到问题)

public void read(String fileName) {
System.out.println(fileName);
}

当我去使用stock的jsp时我得到

创建名称为“stock”的 bean 时出错: Autowiring 字段失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException: 无法 Autowiring 字段: private 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 定义不正确。 spring 无法找到 bean com.domain.ModRepository

Autowiring 按类型进行。你的 ModRepository 是某个接口(interface)的实现吗?在这种情况下,如果有很多实现,spring将无法唯一地标识一个bean。

为了避免这种情况,请使用@Qualifier注释。限定符确保 Autowiring 按名称进行。

或者,您可以尝试使用注释,将 @Component 放在 ModRepository 类之上并确保 applicationContext.xml 中有这两行

  <context:annotation-config />
<context:component-scan base-package="com.domain" />

关于java - bean 的 Autowiring 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6748013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com