【发布时间】:2020-09-27 14:10:10
【问题描述】:
我使用 Spring Boot 和 Thymeleaf 创建一个 Web 应用程序。
当我调试我的应用程序时,它的运行速度非常慢。每个 F8 步骤,调试器都会在我的对象上显示消息 "Collecting data..."。而且我很长一段时间(10-60 秒)都看不到我的对象的状态。
最后,当收集数据完成时,我看到 StackOverflowError。
我知道在这种情况下存在无限递归。汽车链接到服务,服务链接到汽车,等等。它会溢出每个对象的toString() 方法。
我看到很多使用@OneToMany 和@ManyToOne 注释的例子。所有这些都会导致这种递归和 StackOverflowError。在这种情况下,工程师建议使用@JsonIgnore 或@JsonManagedReference/@JsonBackReference 注解来修复无限递归。
这些建议适用于 REST API 序列化对象。
问题在于我没有开发 REST API。我制作 Web MVC 应用程序。
那么你能推荐我什么来修复这个递归并拥有一个快速调试的应用程序?
这是一个糟糕的设计吗?还是别的什么?
谢谢
【问题讨论】:
标签: spring-boot debugging recursion one-to-many many-to-one