无法自动装配方法

时间:2011-12-26 12:40:42

标签: java spring spring-mvc dependency-injection autowired

我收到此错误

org.springframework.beans.factory.BeanCreationException: 
Could not autowire method:

这是我的spring的xml配置。

<bean ...>   
...
    <property name="InfoModel" ref="InfoModel"></property>
</bean>

这是我在Java类中自动装配的代码

  private InfoModel infoModel;

  @Autowired
  public void setInfoModel(InfoModel infoModel) {
    this.infoModel= infoModel;
  }

我错过了什么。我怀疑我应该制作{{1>} InfoModel 以使其自动装配?

Interface

4 个答案:

答案 0 :(得分:11)

如果你@Autowired,则不需要在xml中将其标记为属性。只需将InfoModel声明为XML格式的bean,并从已注入property

的bean中删除xml中的InfoModel

总结

1 您需要在XML中为InfoModel

定义bean

2 您需要从XML中删除property

3 确保您已通过添加

来启动上下文注释
<context:annotation-config />

答案 1 :(得分:1)

如果堆栈跟踪显示没有所述类型的匹配bean,那就错了。

将InfoModel bean添加到spring应用程序上下文,例如通过在相同的xml配置中声明bean:

<bean id="InfoModel" class="com.model.InfoModel" />

顺便说一句。你不应该大写bean标识符的第一个字母,遵循与变量相同的命名约定,即。 lowerCamelCase。 自动装配和显式注入依赖关系也是多余的。

答案 2 :(得分:0)

我认为你应该在私人信息......宣言之前写@Autowired。并如jigar所述,从xml中删除条目。

答案 3 :(得分:0)

您是否使用类型级别注释InfoModel@Component@Service正确注释了您的@Repository班级。所有这些都非常相似。如果您的InfoModel没有正确注释,您将收到这个着名的“No matching bean ...”错误。尝试使用InfoModel@Component课程注释如下:

@Component
public class InfoModel {
  // code
}