报错no bean named injectionservice is defined

来源:2-2 Spring注入方式

慕后端2604525

2017-11-28 09:56

我检查了下applicationContext.xml,里面的bean ID拼写没问题,在单元测试中的getBean拼写也没问题,为什么总是提示找不到?

写回答 关注

1回答

  • 94Ting
    2017-11-28 14:47:15

    bean找不到除了你的名字拼写错误,就是spring找不到你的配置。我之前运行也有错误,是因为老师的代码在这一节讲了两个注解的一些变化,有些地方没有改回来。有三个解决办法:

    解决1:我的异常是org.springframework.beans.factory.UnsatisfiedDependencyException,根据异常栈输出发现是autowire的问题,在spring-injection.xml文件中bean配置加autowire="constructor"可以解决,正常输出。autowire详解:https://www.cnblogs.com/ViviChan/p/4981539.html <--这个相当于告诉spring容器通过构造器自动去找对应类。

    解决2:把InjectionServiceImpl.java的构造器中injectionDAO1修改去掉1。<--相当于用autowire = default,但是你要保证要找的dao名字是相同的。

    解决3:1设值注入 <property>+ref:通过设值注入,<property name="injectionDAO" ref="injectionDAO">,不过injectionServiceImpl里需要加一个无参构造。<--这个方法就相当于setter注入。需要加一个无参构造方法保证InjectionServiceImpl能被初始化。

    以上。另外,如果要问问题。。建议贴上console窗口输出的异常栈,以及你出错的代码,你贴上这个图我以为你运行正常呢。。。

Spring入门篇

为您带来IOC和AOP的基本概念及用法,为后续高级课程学习打下基础

268802 学习 · 1016 问题

查看课程

相似问题