昨天发下一个错误,‘Method threw 'java.lang.StackOverflowError' exception.’,栈内存溢出,检查了现在的程序,没发现问题(后面自己打脸了)。如下:
先说下环境:
- springboot-2.2.1
- mybatis-3.5.1
- mybatis-spring-2.0.1
- mybatis-plus-3.1.2
写了几个方法,但是一直报上面问题,搜帖子,有的说的实体类中的toString(),相互调用,陷入死循环引起的,重写了toString()试了不行,使用@Getter和@Setter代替@Data注解,也不行。
换招,有说tomcat版本引起的,切换了本地的tomcat也不行,尝试了也是一样报错,后来看帖子说是spring版本或mybatis版本影响的,我看了之前写的方法正常可以用,我就寻思着再检查下。
果不其然,在ServiceImpl中,使用了alarmService调用Dao层方法,这里互相调用,造成了栈溢出:
改为:
即可解决问题。
每个问题发生情况不一样,首要还是自身细心,检查过后,再去找方法。