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;
只有在没有例外的情况下才会发生
我在 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;
只有在没有例外的情况下才会发生