Java 准备响应正文的逻辑应该在@Service或@Controller上?
我正在使用Spring Boot,并将尝试解释出现疑问的情况 想象一下,Java 准备响应正文的逻辑应该在@Service或@Controller上?,java,rest,spring-boot,Java,Rest,Spring Boot,我正在使用Spring Boot,并将尝试解释出现疑问的情况 想象一下,MyObject有一些其他对象组成它 public class MyObject { private Integer id; private MyObject2 obj2; private MyObject3 obj3; private MyObject4 obj4; // getters and setters ... } 其中一些字段由MyObject组成 假设MyObje
MyObject
有一些其他对象组成它
public class MyObject {
private Integer id;
private MyObject2 obj2;
private MyObject3 obj3;
private MyObject4 obj4;
// getters and setters ...
}
其中一些字段由MyObject
组成
假设MyObject2
将MyObject
作为一个字段,在双方之间建立某种关系。(例如:许多人)
防止无限递归的逻辑是通过设置为null
,从MyObject2
中删除MyObject2
引用上的所有MyObject2
引用
我的助手班负责这项工作,但是,我应该把它称为哪里呢
在我的控制器中:
public ResponseEntity<?> handleRequestOfRetrieveAllMyObject2() {
List<MyObject2> objs2 = obj2Service.findAll();
objs2.forEach(obj2 -> obj2.getObjs().forEach(obj -> Helper.buildPrettyMyObject(obj)));
return ResponseEntity.ok(objs2);
}
public ResponseEntity HandlerRequestoreFretrieveAllMyObject 2(){
List objs2=obj2Service.findAll();
forEach(obj2->obj2.getObjs().forEach(obj->Helper.buildpretymyobject(obj));
返回响应正确(objs2);
}
为我服务:
public List<MyObject2> findAll() {
List <MyObject2> objs2 = obj2Repository.findAll();
objs2.forEach(obj2 -> obj2.getObjs().forEach(obj -> Helper.buildPrettyMyObject(obj)));
return objs2;
}
公共列表findAll(){
List objs2=obj2Repository.findAll();
forEach(obj2->obj2.getObjs().forEach(obj->Helper.buildpretymyobject(obj));
返回objs2;
}
它应该是服务层的作业,还是控制器层的作业?
我在控制器层执行此操作,因为控制器负责将响应返回给客户机,而服务层应该只执行业务规则,并且必须是可重用的
我做错了吗
我在控制器层这样做,因为控制器是
负责将响应返回给客户和服务
层应该只执行业务规则,并且必须是可重用的。我在做什么
这不对吗
你做得对。这是一个表示/序列化方面的问题,因此控制器层是这方面的理想候选者。但这是一个你可以花上几天甚至几周的时间来讨论的问题。你做得对,继续前进
public ResponseEntity<?> handleRequestOfRetrieveAllMyObject2() {
List<MyObject2> objs2 = obj2Service.findAll();
objs2.forEach(obj2 -> obj2.getObjs().forEach(obj -> Helper.buildPrettyMyObject(obj)));
return ResponseEntity.ok(objs2);
}
public List<MyObject2> findAll() {
List <MyObject2> objs2 = obj2Repository.findAll();
objs2.forEach(obj2 -> obj2.getObjs().forEach(obj -> Helper.buildPrettyMyObject(obj)));
return objs2;
}