•BeansException 子类型
spring设计的技巧就是spring中比较讨厌排斥check类型异常,也就是try...catch强制检查的异常,全部基本上用的是runtime异常类型,因此在接口上不需要声明一下,必须要用哪个接口,在调用的时候不需要到处去try...catch;传统javaee基本上都是一些check型异常居多。
异常类型触发条件(举例)场景举例NoSuchBeanDefinitionException当查找Bean 不存在于IoC 容器时BeanFactory#getBean
ObjectFactory#getObject
NoUniqueBeanDefinitionException类型依赖查找时,IoC 容器存在多个Bean 实例BeanFactory#getBean(Class)(getBean(String.class),在这个bean上面标注primary解决这个异常)BeanInstantiationException当Bean 所对应的类型非具体类时(接口)BeanFactory#getBeanBeanCreationException当Bean 初始化过程中Bean 初始化方法执行异常时(bean和creation都是名称表示创建时异常)BeanDefinitionStoreException当BeanDefinition 配置元信息非法时XML 配置资源无法打开BeanCreation时顺序很重要,在初始化bean时,注意它的执行顺序,注意适当的try...catch,如果初始化的时候需要显示的去抛异常,如果它就是错了,不能让它通过,这是一种设计,fast-fail;
spring应用中遇到异常多看提示,cause by最终trace的原因,往上找spring异常的提示;