假设我有一些代码可以对另一个API进行2次rest调用。我需要一个服务层在同一操作中进行2个rest调用。

在Java中,我可能会做这样的事情

@Service
public class RestService{
   @Autowired
   RestClient restClient

   def shutdown(){
      if(restClient.isSystemGood()){
         restClient.shutdownSystem()
      }
   }
}

@Repository
public class RestClient {
  boolean isSystemGood() {
    ...
  }

  void shutdownSystem() {
    ...
  }
}

我应该如何适应做类似的事情?
  • 我应该将RestClient内部的逻辑放入域类吗?还是应该将RestService和RestClient都放入域类?域类是否必须由数据库支持?

  • 因为我仅在grails默认文件结构中看到servicedomain文件夹。

    最佳答案

    在grails-app / services目录中的RestService(在您的简单情况下,是非事务性的)是逻辑的正确位置。将服务注入(inject) Controller Action 中以使用它。
    不建议将服务注入(inject)到域类中。它难以测试,降低了读取性能,并导致了意大利面条的设计。这就是为什么Grails现在默认情况下具有disabled the services injection in the domain类的原因

    关于grails - 我应该将客户代码放在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51451174/

    10-09 15:54