報(bào)錯(cuò)no bean named injectionservice is defined
我檢查了下applicationContext.xml,里面的bean ID拼寫(xiě)沒(méi)問(wèn)題,在單元測(cè)試中的getBean拼寫(xiě)也沒(méi)問(wèn)題,為什么總是提示找不到?
我檢查了下applicationContext.xml,里面的bean ID拼寫(xiě)沒(méi)問(wèn)題,在單元測(cè)試中的getBean拼寫(xiě)也沒(méi)問(wèn)題,為什么總是提示找不到?
2017-11-28
舉報(bào)
2017-11-28
bean找不到除了你的名字拼寫(xiě)錯(cuò)誤,就是spring找不到你的配置。我之前運(yùn)行也有錯(cuò)誤,是因?yàn)槔蠋煹拇a在這一節(jié)講了兩個(gè)注解的一些變化,有些地方?jīng)]有改回來(lái)。有三個(gè)解決辦法:
解決1:我的異常是org.springframework.beans.factory.UnsatisfiedDependencyException,根據(jù)異常棧輸出發(fā)現(xiàn)是autowire的問(wèn)題,在spring-injection.xml文件中bean配置加autowire="constructor"可以解決,正常輸出。autowire詳解:https://www.cnblogs.com/ViviChan/p/4981539.html?<--這個(gè)相當(dāng)于告訴spring容器通過(guò)構(gòu)造器自動(dòng)去找對(duì)應(yīng)類。
解決2:把InjectionServiceImpl.java的構(gòu)造器中injectionDAO1修改去掉1。<--相當(dāng)于用autowire = default,但是你要保證要找的dao名字是相同的。
解決3:1設(shè)值注入 <property>+ref:通過(guò)設(shè)值注入,<property name="injectionDAO" ref="injectionDAO">,不過(guò)injectionServiceImpl里需要加一個(gè)無(wú)參構(gòu)造。<--這個(gè)方法就相當(dāng)于setter注入。需要加一個(gè)無(wú)參構(gòu)造方法保證InjectionServiceImpl能被初始化。
以上。另外,如果要問(wèn)問(wèn)題。。建議貼上console窗口輸出的異常棧,以及你出錯(cuò)的代碼,你貼上這個(gè)圖我以為你運(yùn)行正常呢。。。