文章目录

  • BeansException的子接口
  • NoSuchBeanDefinitionException不存在要查找的Bean
  • NoUniqueBeanDefinitionException 容器中存在多个同类型的Bean
  • BeanInstantiationException不能被实例化
  • BeanCreationException Bean初始化异常
  • BeanDefinitionStoreException 配置元错误

BeansException的子接口

异常类型 触发条件(举例) 场景举例
NoSuchBeanDefinitionException 当查找 Bean 不存在于 IoC 容器时 BeanFactory#getBean ObjectFactory#getObject
NoUniqueBeanDefinitionException 类型依赖查找时,IoC 容器存在多 个 Bean 实例 BeanFactory#getBean(Class)
BeanInstantiationException 当 Bean 所对应的类型非具体类时 BeanFactory#getBean
BeanCreationException 当 Bean 初始化过程中 Bean 初始化方法执行异常 时
BeanDefinitionStoreException 当 BeanDefinition 配置元信息非法 时 XML 配置资源无法打开时

Rumenz.java实体类

package com.rumenz;import org.springframework.beans.factory.InitializingBean;public class Rumenz implements InitializingBean {private Integer id;private String name;@Overridepublic void afterPropertiesSet() throws Exception {throw new Exception("初始化异常。。。。");}@Overridepublic String toString() {return "Rumenz{" +"id=" + id +", name='" + name + '\'' +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

NoSuchBeanDefinitionException不存在要查找的Bean

package com.rumenz;
import java.util.Map;
public class DemoApplication {public static void main(String[] args) {AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();ac.register(DemoApplication.class); //不注册Rumenzac.refresh();//NoSuchBeanDefinitionException不存在要查找的BeanbyBeanFactory(ac);ac.close();}//NoSuchBeanDefinitionException不存在要查找的Beanprivate static void byBeanFactory(AnnotationConfigApplicationContext ac) {ac.getBean(Rumenz.class);}}

输出

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.rumenz.Rumenz' available

NoUniqueBeanDefinitionException 容器中存在多个同类型的Bean

配置Bean的

注册了两个Rumenz

package com.rumenz;
import org.springframework.context.annotation.Bean;public class Config {@Beanpublic Rumenz rumenz1(){Rumenz r=new Rumenz();r.setId(456);r.setName("入门小站");return r;}@Beanpublic Rumenz rumenz(){Rumenz r=new Rumenz();r.setId(123);r.setName("入门小站");return r;}}

案例

package com.rumenz;import org.springframework.beans.factory.ObjectProvider;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;import java.util.Map;public class DemoApplication {public static void main(String[] args) {AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();ac.register(Config.class); //注册Rumenzac.refresh();// NoUniqueBeanDefinitionException要查找的Bean不唯一byBeanFactory(ac);ac.close();}// NoUniqueBeanDefinitionException要查找的Bean不唯一private static void byBeanFactory(AnnotationConfigApplicationContext ac) {ac.getBean(Rumenz.class);}}

输出

Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'com.rumenz.Rumenz' available: expected single matching bean but found 2: rumenz1,rumenz

BeanInstantiationException不能被实例化

package com.rumenz;public class DemoApplication {public static void main(String[] args) {AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();BeanDefinitionBuilder bb=BeanDefinitionBuilder.genericBeanDefinition(BeanFactory.class);ac.registerBeanDefinition("err",bb.getBeanDefinition());ac.refresh();ac.close();}
}

输出

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.beans.factory.BeanFactory]: Specified class is an interface

BeanCreationException Bean初始化异常

package com.rumenz;import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;import java.util.Map;public class DemoApplication {public static void main(String[] args) {AnnotationConfigApplicationContext ac=new AnnotationConfigApplicationContext();// 4.BeanCreationException Bean初始化异常BeanDefinitionBuilder bb=BeanDefinitionBuilder.genericBeanDefinition(Rumenz.class);ac.registerBeanDefinition("err",bb.getBeanDefinition());ac.refresh();ac.close();}}

BeanDefinitionStoreException 配置元错误

Beanss.xml 不存在就会触发BeanDefinitionStoreException

ApplicationContext acc=new ClassPathXmlApplicationContext("Beanss.xml");

输出

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [Beanss.xml]; nested exception is java.io.FileNotFoundException: class path resource [Beanss.xml] cannot be opened because it does not exist

Spring依赖查找中的常见异常相关推荐

  1. Spring生命周期中的常见接口

    SPRING自身生命周期 ApplicationContextInitializer 在refresh之前被调用 比如著名的应用是在springboot启动前向容器注入配置 注意需要在spring.f ...

  2. java中的常见异常

    1. java.lang.NullPointerException(空指针异常)  调用了未经初始化的对象或者是不存在的对象 经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时 ...

  3. java中的常见异常1 -- 新手上路,减速慢行

    Throwable: 异常的顶级父类             ----Error:错误,程序无法处理             ----Exception:异常,可通过编码修复              ...

  4. 一分钟弄懂Spring @Bean @Autowired @Qualifier 的常见异常 以及命名规范

    情况1:创建的bean类型和自动装配字段的类型不同-[此操作无效] @Autowired BCryptPasswordEncoder passwordEncoder;@Bean PasswordEnc ...

  5. SpringIoc依赖查找-5

    1. 依赖查找的今世前生: Spring IoC容器从Java标准中学到了什么? 单一类型依赖查找 JNDI - javax.naming.Context#lookup(javax.naming.Na ...

  6. selenium自动化测试_49自动化测试中最常见的Selenium异常

    selenium自动化测试 开发人员将始终在编写代码时牢记不同的场景,但是在某些情况下,实现可能无法按预期工作. 相同的原则也适用于测试代码,该代码主要用于测试现有产品的功能,发现bug并确保产品10 ...

  7. 49自动化测试中最常见的硒异常

    开发人员将始终在编写代码时牢记不同的场景,但是在某些情况下,实现可能无法按预期工作. 相同的原则也适用于测试代码,该代码主要用于测试现有产品的功能,发现错误以及使产品100%不受错误影响. 正确地说, ...

  8. 工作中常用到的 Spring 依赖管理技术盘点

    点击关注公众号,实用技术文章及时了解 今天主要和大家分享一些在工作中可能会用到的Spring依赖注入,依赖查找方面的技术点整理,非常实用. Spring依赖查找专题 单一类型查找 常见用法如下所示: ...

  9. 依赖查找和依赖注入的区别

    简单来说,依赖查找是主动和手动的依赖查找方式,通常需要依赖容器和标准api去实现:而依赖注入则是手动或自动依赖绑定的方式,无需依赖特定的容器和api. 一.依赖查找 依赖查找(Dependency L ...

最新文章

  1. oracle sap 用友 保险财务系统比较,SAP和用友的财务管理系统比较详解
  2. 整合Web应用与Axis2
  3. 解读Windows更新下载器文件列表(推荐)
  4. Linux Ubuntu 安装 Matlab
  5. 小程序分享到朋友圈功能_小程序开发日记 分享到朋友圈
  6. 说说a标签的onclick和href
  7. 山大824计算机基础,山大考研辅导班:山东大学2020年824计算机基础考研自命题科目考试大纲...
  8. 小程序技术能提升桌面应用安全等级?
  9. Windows10性能优化设置
  10. 菲尼克斯电气——基于Proficloud的设备远程运维工业物联网解决方案
  11. PCA、最小平方差等中用拉格朗日求极值时对常见的一个f(x)=X'A'AX求导的证明
  12. 不重启linux服务器禁用U盘,如何在Linux服务器上禁用U盘?
  13. 事务故障、系统故障和介质故障的恢复
  14. 1964年第一代电子计算机,电子计算机的发展
  15. c语言单片机红外报警设计,超级简单单片机红外感应开关DIY设计
  16. 指标波动的原因很头疼?不妨试试“问诊”法!
  17. 如何让你的网站变黑白?
  18. 不同进制之间相互转换
  19. html登录cdn,html cdn
  20. 5.Serializer,ModelSerializer区别

热门文章

  1. sqlite字符串连接(追加写入)
  2. 蓝桥杯 ALGO-106 算法训练 6-3判定字符位置
  3. [Java] 蓝桥杯ADV-175 算法提高 三个整数的排序
  4. Python判断文件和文件夹是否存在的方法
  5. perl index和rindex的用法
  6. 使用python来操作hive(通过 pyhs2 和 HiveServer2)
  7. Java进阶知识点:协变与逆变
  8. 基于gitosis的Git云端服务器配置
  9. 桌面虚拟化之盗梦空间
  10. jquery 验证email