Spring注解方式無法掃描Service注解
場景描述
系統啟動沒有任何錯誤,但是單獨訪問controller就會報錯,原因是做了service注入。貼兩張圖吧
- 1.分析: 找不到bean的原因就是service注解沒有被掃描到spring中生成bean
- 2.嘗試:手動將service在spring的文件中進行配置,啟動正常,訪問也正常,更證明了第一點的分析結果。
-
3.查資料,大致查詢了很多spring+springmvc+hibernate的框架搭建,核對我的配置(粗心),jar包等,其實都沒錯,貼一些我覺得寫得比較明白清楚的文章大家可以參考,重復寫相同的東西價值不大。
- 這個是注解掃描沖突的說明
- 這個是ssh整合的例子
- 4.繼續查詢資料:我在開源中國查到一篇文章,和我的情況比較類似,但是樓主沒有說明具體的解決情況,只是說了一句是配置文件問題,我想我的配置文件都能正常啟動,理論上不應該存在問題才對,無奈下,再次返回檢查配置文件,由于springmvc的掃描是生效了的,所以我就檢查我的spring-context.xml文件, 兩個文件都是最簡單的配置,所以沒貼,最后貼一下我報錯的地方;
- 5.反思一下,還是個人太粗心,spring框架已經最新到5版本了,所以不存在說配置無法掃描的情況,出現問題就應該是文件沒對,各位共勉!
spring配置不掃描service層的原因
我將contoller給springmvc進行掃描,然后其余所有交給spring掃描
然后發現service層的EmployeeService并沒有掃描到出現以下問題
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘springmvc.crud.service.EmployeeService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585)
… 39 more
最終發現原因是spring配置文件里面context:exclude-filter是不要加use-default-filters的,而context:include-filter是需要加的
找了好久問題!!!
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/god_is_gril/article/details/89205755