mybatis一直加载xml,找到错误的解决方案

 更新时间:2022年02月08日 11:25:01   作者:hwsdau  
这篇文章主要介绍了mybatis一直加载xml,找到错误的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis一直加载xml,找到错误

我们在写springmvc+mybatis项目,启动项目的时候,mapper配置文件一直刷,一直加载。。。。。

对于我们伟大的程序猿来说这并不可怕,可怕的是没有错误打印出来。。。。。完全不知道如何下手啊,

今天终于找到了一种解决方法

找到org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory 类,在下面方法:

    protected void autowireByType(
            String beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs) {
            catch (BeansException ex) {
                throw new UnsatisfiedDependencyException(mbd.getResourceDescription(), beanName, propertyName, ex);
            }

在throw这一行断点即可,这个地方是最早捕获异常的地方,当Mapper.xml文件出错的时候,会有异常信息输出。

还有一个问题,为什么出错后只能看到无限输出的一行日志,而看不到这里具体的异常信息呢?

通过追踪代码,发现在org.springframework.beans.factory.support.AbstractBeanFactory类中的方法:

protected Class<?> getTypeForFactoryBean(String beanName, RootBeanDefinition mbd) {
    if (!mbd.isSingleton()) {
        return null;
    }
    try {
        FactoryBean<?> factoryBean = doGetBean(FACTORY_BEAN_PREFIX + beanName, FactoryBean.class, null, true);
        return getTypeForFactoryBean(factoryBean);
    }
    catch (BeanCreationException ex) {
        // Can only happen when getting a FactoryBean.
        if (logger.isDebugEnabled()) {
            logger.debug("Ignoring bean creation exception on FactoryBean type check: " + ex);
        }
        onSuppressedException(ex);
        return null;
    }
}

这里捕获异常后,直接 return null导致异常被吞。 

mybatis延迟加载(xml)

对于一对一和多对一(mybatis映射为一对一)。查询的时候一起查询即可。

但是对于一对多,和多对多。也许那个多对应的数据很多,而我们不需要那个多。那么一起查询会浪费性能资源。

所以,mybatis有懒加载。

mysql默认是立即加载。

懒加载在Collection或者association属性中有一个fetchType属性,eager立即加载。lazy懒加载。

在mybatis的配置文件中

<settings>
        <!--延迟加载总开关-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--侵入式延迟加载开关-->
        <!--3.4.1版本之前默认是true,之后默认是false-->
        <setting name="aggressiveLazyLoading" value="false"/>
 <!--如果不写这个,可能有问题-->
        <setting name="lazyLoadTriggerMethods" value=""/>
    </settings>

即可。 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • Spring Boot 配置大全(小结)

    Spring Boot 配置大全(小结)

    本篇文章主要介绍了Spring Boot 配置大全(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 线程池之jdk1.8 Executors创建线程池的几种方式

    线程池之jdk1.8 Executors创建线程池的几种方式

    这篇文章主要介绍了线程池之jdk1.8 Executors创建线程池的几种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 浅试仿 mapstruct实现微服务编排框架详解

    浅试仿 mapstruct实现微服务编排框架详解

    这篇文章主要为大家介绍了浅试仿 mapstruct实现微服务编排框架详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Centos6.5下Jdk+Tomcat+Mysql环境安装图文教程

    Centos6.5下Jdk+Tomcat+Mysql环境安装图文教程

    这篇文章主要为大家详细介绍了Centos6.5系统下Jdk+Tomcat+Mysql环境安装过程,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 面试题:java中为什么foreach中不允许对元素进行add和remove

    面试题:java中为什么foreach中不允许对元素进行add和remove

    读者遇到了一个比较经典的面试题,也就是标题上说的,为什么 foreach 中不允许对元素进行 add 和 remove,本文就详细的介绍一下,感兴趣的可以了解一下
    2021-10-10
  • Netty分布式flush方法刷新buffer队列源码剖析

    Netty分布式flush方法刷新buffer队列源码剖析

    这篇文章主要为大家介绍了Netty分布式flush方法刷新buffer队列源码剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • SpringBoot执行异步任务Async介绍

    SpringBoot执行异步任务Async介绍

    这篇文章主要为大家介绍了SpringBoot执行异步任务Async示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • SpringBoot如何防止XSS注入攻击详解

    SpringBoot如何防止XSS注入攻击详解

    这篇文章主要给大家介绍了关于SpringBoot如何防止XSS注入攻击的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 详解java 单例模式及方法总结

    详解java 单例模式及方法总结

    这篇文章主要介绍了详解java 单例模式及方法总结的相关资料,需要的朋友可以参考下
    2017-05-05
  • Java多线程实现方块赛跑小游戏

    Java多线程实现方块赛跑小游戏

    这篇文章主要为大家详细介绍了Java多线程实现方块赛跑小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07

最新评论