1. 程式人生 > >解決Error creating bean with name XXX: Injection of resource dependencies failed

解決Error creating bean with name XXX: Injection of resource dependencies failed

在這裡插入圖片描述解決SSH整合時出現的錯誤,錯誤如上圖所示。

該錯誤是因為Mybatis中需要的註解,spring沒有檢測到此註解資訊。

錯誤原因可能有四處:

(1):web.xml沒有配置spring的上下文環境和核心的監聽器

解決辦法:
在web.xml新增

  <!--spring的上下文-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext-common.xml</
param-value
>
</context-param> <!--spring的核心監聽器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>

(2):SpringMVC的核心配置檔案中沒有正確配置掃描器,如果專案需要用到註解的包,那麼這個包都需要配置註解掃描器

解決辦法:
第一種寫法:在springmvc-config.xml新增:

	<context:component-scan base-package="com.zs.controller" />
	<context:component-scan base-package="com.zs.services" />

第二種寫法:在springmvc-config.xml新增(com.zs包下的所有類都能掃描到):

    <context:component-scan base-package="com.zs"></context:component-scan>

(3):正確的配置註解掃描器,也需要在相應的類上標明該類的註解,如果不標明,專案啟動的時候就無法識別該類的註解,然後在別處呼叫該類,也會報此錯。

解決辦法:
為需要註解的類新增自動掃描@Service、 @Controller等
在這裡插入圖片描述
具體需要哪一種,請看官方文件解釋:Spring 2.5引入了更多典型化註解(stereotype annotations):

@Component、@Service和 @Controller。@Component是所有受Spring管理元件的通用形式;而@Repository、@Service和 @Controller則是@Component的細化,用來表示更具體的用例(例如,分別對應了持久化層、服務層和表現層)。也就是說,你能用@Component來註解你的元件類,但如果用@Repository、@Service 或@Controller來註解它們,你的類也許能更好地被工具處理,或與切面進行關聯。例如,這些典型化註解可以成為理想的切入點目標。當然,在Spring Framework以後的版本中, @Repository、@Service和 @Controller也許還能攜帶更多語義。如此一來,如果你正在考慮服務層中是該用@Component還是@Service,那@Service顯然是更好的選擇。同樣的,就像前面說的那樣, @Repository已經能在持久化層中進行異常轉換時被作為標記使用了。”

(4):前面幾種可能出現的情況你都沒有發生,那麼可能是你在配置多個自動註解的類,自動註解的類的唯一識別符號重複。

解決辦法:將每個需要自動註解類的識別符號修改為不同的,因為在呼叫的時候,不是型別@Autowired自動注入,則是 @Resource(name = “studentService”,type = com.zs.services.Impl.StudentServiceImpl.class)這種方式注入,是根據name來找到註解類的,所以name必須不同。
在這裡插入圖片描述

一般情況下是這幾個地方出了錯,細心檢查一下哦~

說在最後的話:編寫實屬不易,若喜歡或者對你有幫助記得點贊+關注或者收藏哦~