我是靠谱客的博主 成就豆芽,最近开发中收集的这篇文章主要介绍Spring注解方式无法扫描Service注解的解决,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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是需要加的
找了好久问题!!!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持靠谱客。

最后

以上就是成就豆芽为你收集整理的Spring注解方式无法扫描Service注解的解决的全部内容,希望文章能够帮你解决Spring注解方式无法扫描Service注解的解决所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部