Spring MVC 中的控制器建议

Controller advice in Spring MVC

我在 Spring 中使用控制器有一些问题。

最好,我希望 Controller 方法保持较小,并简单地使用它们来调用服务函数,如下所示:

@Controller
class controllerClass {
    @RequestMapping("/foo/")
    public void foo(Model model) {
        Data returnedData = fooServiceFunction();
        model.addAttribute("data", returnedData);
    }
}

@Service
class serviceClass {
    fooServiceFunction() {
        Data data = methodCall();
        methodCall2();
        methodCall3();

        return data;
    }
}

但是,在实践中我发现这个实现很困难,因为我发现自己需要检查从 fooServiceFunction() 中调用的方法是成功还是失败。我一直在从这些函数中 return 自定义 'Status' class 传递给控制器​​以指示方法是否已成功执行 and/or 已发生的任何错误(验证错误等)。

现在,如果我不需要 return 任何数据,这很好。但是,如果我想 return 来自服务函数的数据并将其传递给控制器​​,这意味着我需要为每个控制器方法创建一个自定义 class,其中包含:

a) the data.
b) the success status

这似乎不合理。

我考虑过只抛出异常来指示失败,但这似乎不合适。

有没有更好的方法?处理这些情况的最佳方法是什么?还是我应该只编写实现更多 application/business 逻辑的胖控制器方法?

谢谢。

我认为最好的方法是抛出自定义异常,然后使用带有

注释的 class

@ControllerAdvice

处理该异常并使其 return 成为根据您的需要定制的 ResponseEntity。这样行

return data;

只有在没有例外的情况下才会发生