Spring注入bean报错:Error creating bean with name的网上找不到的解决方案

今天在研究BaseService,在进行单元测试时,发现tomcat一直报错,错误代码如下:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘这是我的service测试类’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [这是我的service类] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}

从信息中,可以看到是找不到需要注入的bean!我的程序是通过注解@Resource注入的。

尝试了网上的N种方法,无非以下几种:

  1. 配置文件没有开启注解扫描bean
  2. spring配置文件里beans标签没配置default-autowire=”byname”
  3. 各种配置问题…
  4. 调用死循环

但是问题依然存在,我就开始去检查需要注入的类有没有问题,结果发现了。

@Transactional
@Service("roomTypeService")
public abstract class RoomTypeServiceImpl extends BaseServiceImpl<RoomType, Integer> implements RoomTypeService {
    // other fileds and methods......
}

不知道小伙伴们看出问题没有,这里的Service注解和name都没有问题,问题出在类写成了抽象类!!!抽象类啊!!!我把它去掉了就能正常跑起来了!!

虽然我不知道为什么当时写成了抽象类,但还是想分享出来让跟我犯错误的同学尽快脱离debug的痛苦。

说回问题的本质,为什么写成了抽象类就无法正常注入呢?这也正是java基础知识:注入相当于实例化一个对象,而在java的语法里面,抽象类(和接口)是无法实例化(new)的,所以就注入失败了!

好久没写过原创的文章了,这样不行,说好的坚持呢= =

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值