Spring里遇到的一个问题,autowired时报找不到bean定义

有个工程师,在项目工程里加了些页面和Service,Dao之类,然后启动web工程,Spring一直报错说找不到autowired定义的service接口的实现bean的定义,然后来求助我来帮忙解决。

我理所当然的按照常规步骤1,2,3...检查他的代码是否存在问题:

  • 第一步,检查service接口是否确实有实现类并且@Service标注了,这个是初学者让出现问题,检查结果确实没问题Pass。
  • 第二布,因为其service定义在新的package里,遂检查其spring配置里,component-scan是否新增加了扫描package,检查结果确实没问题Pass。
  • 第三步,怀疑Eclipse开发环境里,运行tomcat的时候,没有publish成功,确认workspace里是自动build,并且clean & Rebuild,在clean tomcat server,问题依旧。
  • 第四步,还是怀疑Eclipse开发环境里,运行tomcat的时候,没有publish成功,遂检查workspace的的.metadata/.plugins/org.eclipse.wst.server.core里所发布的内容,检查结果确实class已经publish过去没问题,Pass。
  • 第五步,检查Web工程里的Deployment Assembly,配置正确没问题,Pass。

逐步检查下来,常规的错误貌似都没有犯,但怎么clean,再启动依然报错,找到Service接口,Ctrl+T,确实找到实现类,并且@Service标注。问题查到这里就有点奇怪了,这样问题以前貌似没碰到过。

有问题不能不解决,继续琢磨,Ctrl+G找Service所有引用,发现有两个地方被使用@Autowared注入,然后,然后,然后,点其中一个引用的地方,Ctrl+T找其实现类,很神奇的发现,光标就跳到引用这个service的类本身上。OMG,Finally,原来该Service的实现Bean在引用自身Service,结果循环引用导致无法实例化Bean而报出这个错误。对于一个中高级工程师来说,犯这个错误,我只能一顿痛扁,挣一顿免费晚餐,你,是否也曾经犯过这个傻呢......Spring里遇到的一个傻问题,autowired时报找不到bean定

Spring里遇到的一个问题,autowired时报找不到bean定义

时间: 2024-10-09 23:44:04

Spring里遇到的一个问题,autowired时报找不到bean定义的相关文章

品Spring:bean定义上梁山

认真阅读,收获满满,向智慧又迈进一步... 技术不枯燥,先来点闲聊 先说点好事高兴一下.前段时间看新闻说,我国正式的空间站建设已在进行当中.下半年,长征五号B运载火箭将在海南文昌航天发射场择机将空间站核心舱发射升空.预计用2到3年将空间站建好. 虽然到时你们不让我上去,不过我也为这件事出不了什么力,算扯平了.哈哈,但是我还是会衷心的祝福你. 长征五号火箭首次采用5米大直径的箭体结构,总加注量达到780吨,起飞时共有10台发动机产生1078吨的推力,具备近地轨道25吨.地球同步转移轨道14吨的运载

(转)Spring对注解(Annotation)处理源码分析1——扫描和读取Bean定义

1.从Spring2.0以后的版本中,Spring也引入了基于注解(Annotation)方式的配置,注解(Annotation)是JDK1.5中引入的一个新特性,用于简化Bean的配置,某些场合可以取代XML配置文件.开发人员对注解(Annotation)的态度也是萝卜青菜各有所爱,个人认为注解可以大大简化配置,提高开发速度,同时也不能完全取代XML配置方式,XML 方式更加灵活,并且发展的相对成熟,这种配置方式为大多数 Spring 开发者熟悉:注解方式使用起来非常简洁,但是尚处于发展阶段,

Spring.Net在ASP.NET Mvc里使用的一个小例子

就贴个小例子,就不注意格式了. 1.下载dll NuGet的下载地址:http://docs.nuget.org/docs/start-here/installing-nuget 在vs的NuGet里搜索spring.web.mvc,它会自动下载SpringNet的引用包. 安装完成之后你的项目会多三个引用,项目目录../packages文件夹下面也会多出这三个文件夹里面是SpringNet的文件. 2.写代码例子 很简单的例子.定义一个接口,一个对于接口的实现类. namespace MvcA

spring之注解(二)Autowired

从spring 2.0开始,spring依次加入了对注解型元数据配置的支持.自此我们有了另外一种配置bean的方式.上篇文章中,我们对Spring支持的注解进行了大致的分类,并对其有了初步的介绍.本篇文章则对其展开较详细的说明.主要讲述依赖级别,部分属性级别则在过程中穿插使用. 本篇使用的示例代码继承之前的篇章. 依赖级别 Spring可以使用这些注解进行依赖注入,通常是自动的,或者借助一些辅助信息.也就是说,我们对Bean的定义还是采用XML的方式,而对其依赖的注入则使用注解的方式. @Aut

Spring 源码(九)@Autowired注解实现原理(Spring Bean的自动装配

@Autowired注解的实现过程,其实就是Spring Bean的自动装配过程.通过看@Autowired源码注释部分我们可以看到@Autowired的实现是通过AutowiredAnnotationBeanPostProcessor后置处理器中实现的. AutowiredAnnotationBeanPostProcessor 类图 PriorityOrdered:确认 AutowiredAnnotationBeanPostProcessor 后置处理器的执行优先级 BeanFactoryAw

Spring 源码(九)@Autowired注解实现原理(Spring Bean的自动装配)

@Autowired注解的实现过程,其实就是Spring Bean的自动装配过程.通过看@Autowired源码注释部分我们可以看到@Autowired的实现是通过AutowiredAnnotationBeanPostProcessor后置处理器中实现的. AutowiredAnnotationBeanPostProcessor 类图 PriorityOrdered:确认 AutowiredAnnotationBeanPostProcessor 后置处理器的执行优先级BeanFactoryAwa

Entity Framework 6 Recipes 2nd Edition(11-4)译 -> 在”模型定义”函数里调用另一个”模型定义”函数

11-4.在”模型定义”函数里调用另一个”模型定义”函数 问题 想要用一个”模型定义”函数去实现另一个”模型定义”函数 解决方案 假设我们已有一个公司合伙人关系连同它们的结构模型,如Figure 11-4所示: Figure 11-4. A model representing the associate types in a company together with the reporting association 在我们的虚拟的公司里, , team members被一个team lea

在数据库里彻底删除一个虚拟机

mysql> SET FOREIGN_KEY_CHECKS = 0; 修改KEY值,使此库变为可直接删除状态 Query OK, 0 rows affected (0.00 sec) mysql> delete from instances  where uuid="3ab73261-82ce-4b9a-9a1c-519624e19dc2"; Query OK, 1 row affected (0.03 sec) mysql> SET FOREIGN_KEY_CHEC

Spring学习之第一个AOP程序

IOC和AOP是Spring的两大基石,AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP). 在进行 OOP 开发时,都是基于对组件(比如类)进行开发,然后对组件进行组合,OOP 最大问题就是无法解耦组件进行开发,比如我们上边举例,而 AOP 就是为了克服这个问题而出现的,它来进行这种耦合的分离.AOP 为开发者提供一种进行横切关注点(比如日志关注点)分离并织入的机制,把横切关注点分离,然后通过某种技术织入到系统中,从而无耦