NoSuchBeanDefinitionException

情况1: No qualifying bean of type […] found for dependency

  1. 如果在 Spring 上下文中找不到对应的定义,就会抛出 NoSuchBeanDefinitionException(比如没有标注 @ Component,@Repository,@Service, @Controller等注解)
  2. 所在的包没有被 Spring 扫描到。

情况2: No qualifying bean of type […] is defined

有两个实现类同时实现同一个接口

解决方案:

  1. 注入的时候加上 @Qualifier("自己定义的名称")
    @Component
    public class personA implements BeanPerson {
        //
    }
    
    @Component
    public class personB implements BeanPerson {
        //
    }
    
    @Component
    public class TestBean {
        @Autowired
        @Qualifier("personA")
        private BeanPerson beanPerson;
    }
        
  2. 将其中一个 Bean 加上 @Primary的注解,优先注入加了 Primary 注解的 Bean ,不会抛异常
    @Component
    @Primary
    public class personA implements BeanPerson {
        //
    }

情况3: No Bean Named […] is defined

  1. 从 Spring 上下文中通过名字获取一个 Bean 时抛出
    @Component
    public class BeanPerson implements InitializingBean {
        @Autowired
        private ApplicationContext context;
        @Override
        public void afterPropertiesSet() {
            context.getBean("xxxBean");
        }
    }
  2. 报错如下: 
    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 
    No bean named 'xxxBean' is defined

情况4: 调用外部服务配置的别名有问题

  1. alias别名后面多了空格,别名不合法,导致初始化外部依赖服务实例时失败

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值