使用SpringBoot获取bean时出错:No qualifying....

最近工作时遇到一个bug
项目使用springboot,在使用SpringContextHloder,getBean( ) ;时报错:No qualifying bean of type ‘xxx’ available

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.web.xxxx.service.XxxxxxService' available

一般此错误表示没有可用的bean,仔细查看了代码确保此类存在且正确注入到Spring中

Controller:

 public Map loadForm(String round,String instanceId) {
 		//出错位置
 		// SpringContextHolder.getBean(XxxxxxService.class);为自定义封装的方法,从spring容器中获取bean
        XxxxxxService xxxxxxService= SpringContextHolder.getBean(XxxxxxService.class);
 }

Service:

@Service
@Transactional(readOnly = true)
public class XxxxxxServiceextends CrudService<XxxxxxDao, Xxxxxx> {
    public Xxxxxx getById(Map map){
        return dao.getById(map);
    }

经过几个小时的摸索,最后在网上找到资料,是因为使用了DevTools热部署插件,导致程序启动时使用的是DevTools热部署插件重写的ClassLoader,而不是Java默认的ClassLoader,因此可能会导致某些类无法正确加载,从而导致无法获取bean。

解决方案:
不使用热部署插件,即可解决该报错

博客园的搬家ID,不用理会(2dfef1bd-fa97-4f94-8c2c-eb808c3eaf47)

参考文章:
https://my.oschina.net/u/4298243/blog/3398192

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值