Java SpringMVC4在无限循环中返回JSON
实体:Java SpringMVC4在无限循环中返回JSON,java,spring,spring-mvc,Java,Spring,Spring Mvc,实体: class A{ private int id; @oneToMany(mappedBy = "a") private List<B> bList; } class B{ private int id; @ManToOne private A a; } 在无限循环中返回JSON 在类A上使用@JsonBackReference注释,正常结果: class A{ private int id; @oneToMany(map
class A{
private int id;
@oneToMany(mappedBy = "a")
private List<B> bList;
}
class B{
private int id;
@ManToOne
private A a;
}
在无限循环中返回JSON
在类A上使用@JsonBackReference注释,正常结果:
class A{
private int id;
@oneToMany(mappedBy = "a")
@JsonBackReference //this property is ignored
private List<B> bList;
}
A类{
私有int-id;
@oneToMany(mappedBy=“a”)
@JsonBackReference//忽略此属性
私人名单;
}
但是,当您查询一个类时,返回的结果不是bList(使用@jsonbackreference),我可以做些什么来返回bList属性?我建议不要在对象之间使用循环引用 这会产生很多问题,JSON生成就是其中之一 •循环类参考产生高耦合;每次更改两个类中的任何一个时,都必须重新编译这两个类 •循环装配参考防止静态链接,因为B依赖于A,但A在B完成之前无法装配 •循环对象引用会使原始的递归算法(如序列化程序、访问者和漂亮的打印机)因堆栈溢出而崩溃。更高级的算法将具有周期检测,只会以更具描述性的异常/错误消息失败 •循环对象引用还使依赖项注入变得不可能,从而显著降低了系统的可测试性 •具有大量循环引用的对象通常是上帝对象。即使他们不是,他们也有导致意大利面代码的倾向 •循环实体引用(特别是在数据库中,但也在域模型中)防止使用非空性约束,这可能最终导致数据损坏或至少不一致 •在试图理解程序如何运行时,循环引用通常会造成混淆,并大幅增加认知负荷
private BRepository b;
@RequestMapping("/b")
public Object getB(){
return b.getB(1);
}
class A{
private int id;
@oneToMany(mappedBy = "a")
@JsonBackReference //this property is ignored
private List<B> bList;
}