SpringBoot启动时序列化对象时报java.lang.StackOverflowError错

将项目改造成SpringBoot,使用了AOP切面日志,配置完之后启动项目,报java.lang.StackOverflowError错。

图片说明

下面是我的AOP配置:

图片说明

打过断点,定位到报错的地方是其中的:LogInterceptor.java

图片说明

new Gson().toJson(arguments[i])往底层走,在这一步报:

图片说明
图片说明
图片说明

百度了很多方法,但是没有找到有效的,求大佬指点迷津!

4个回答

大对象实例化。切点配置了“Server”,所以切点切自己了。

你的JVM参数-Xss 是不是太小了,调大 -Xss 参数看看;

m0_37772518
哆啦A梦陈 这个并不能从本质上解决问题。
一年多之前 回复

你看看是不是你设置了多个AOP切面,但没设置顺序,有栈冲突。
图片说明
像这样规定下切面的顺序@Order(1)
看你错误是数据库问题。
如果你的Mysql比较高版本6以上,就设置下
driver-class-name: com.mysql.cj.jdbc.Driver

m0_37772518
哆啦A梦陈 我这个是在配置了AOP日志,启动项目的时候,程序获取的就是一些自动配置的对象,获取了BasicDataSource,我的本意是启动的时候不切,但是现在启动的时候也切了。
一年多之前 回复
tavatimsa
tavatimsa 你这是不是有JavaBean不是Gson自动生成的啊。所以传递进去不能转换成JSON
一年多之前 回复
m0_37772518
哆啦A梦陈 我的Datasource是SpringBoot自动配置的,也设置了driver-class-name。只有一个AOP切面,还是报一样的错
一年多之前 回复
m0_37772518
哆啦A梦陈 我的Datasource是SpringBoot自动配置的,也设置了driver-class-name。只有一个AOP切面,还是报一样的错
一年多之前 回复

首先你确定一下你所使用的日志是哪一种,springboot默认使用的日志是logback内嵌在springboot中,如果要使用别的日志需要排除logback否则就会报错。

m0_37772518
哆啦A梦陈 我已经将这些都排除掉了,但是还是会这样。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐