Service 控制器与服务中的事务管理

Service 控制器与服务中的事务管理,service,controller,transactions,Service,Controller,Transactions,如果我想在不同的事务中运行两个方法,那么哪一个更好?只需从控制器层的方法调用这些方法,从服务层调用它们,或者在控制器中为每个方法创建两个不同的方法?我在下面附上一些例子 我认为把它们放在控制器层是为了给控制器提供一些业务逻辑和智能,而不应该是这样,控制器应该是平面的,对吗 如果它是一个Rest控制器,您应该给客户端一个OK或KO,但是使用选项1和2,如果第一个方法变为OK,第二个方法变为KO,那么对客户端的响应是什么?对于这种情况,选项3将是一个更好的选择,但您现在正在将一些业务逻辑放入客户端

如果我想在不同的事务中运行两个方法,那么哪一个更好?只需从控制器层的方法调用这些方法,从服务层调用它们,或者在控制器中为每个方法创建两个不同的方法?我在下面附上一些例子

  • 我认为把它们放在控制器层是为了给控制器提供一些业务逻辑和智能,而不应该是这样,控制器应该是平面的,对吗
  • 如果它是一个Rest控制器,您应该给客户端一个OK或KO,但是使用选项1和2,如果第一个方法变为OK,第二个方法变为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(){}
}