如何解决Controller VS Service中的事务管理
如果我希望两种方法在不同的事务中运行,哪种方法更好?只是从Controller层中的方法调用方法,从Service层中调用它们,还是在Controller中为每个方法创建两个不同的方法?我在下面附上示例
- 我认为将它们放在Controller层中是为了给Controller提供一些业务逻辑和智能,而不应该这样,Controller应该是扁平的,对吧?
- 如果它是Rest控制器,则应该给客户端一个OK或KO,但是带有选项1和2,如果第一种方法可行,而第二种方法KO,对客户端的响应是什么?对于这种情况,选项3会是一个更好的选择,但是您现在将一些业务逻辑放入客户端中,对吗?
选项1: =>控制器中的一种方法调用了这两种方法
@Controller
public class ProcessingController{
public void processSomething(){
service1.executeSomething();
service2.executeSomething();
}
}
@Transactional
public class Service1{
public void executeSomething(){}
}
@Transactional
public class Service2{
public void executeSomething(){}
}
选项2: =>控制器中的一种方法调用一种方法并将事务逻辑放入服务层
@Controller
public class ProcessingController{
public void processSomething(){
masterService.executeSomething();
}
}
@Transactional
public class MasterService{
public void executeSomething(){
service1.executeSomething();
service2.executeSomething();
}
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public class Service1{
public void executeSomething(){}
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public class Service2{
public void executeSomething(){}
}
选项3: =>控制器中有两个方法,每个方法
@Controller
public class ProcessingController{
public void processSomething1(){
service1.executeSomething();
}
public void processSomething2(){
service2.executeSomething();
}
}
@Transactional
public class Service1{
public void executeSomething(){}
}
@Transactional
public class Service2{
public void executeSomething(){}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。