我正在使用Spring框架。
我写了一些很长的代码来保存一些结果。
因此,后来在其他控制器中发现,我还将需要此代码。只是有些小差异,例如返回其他字符串。
因此,每个控制器当然都有自己的映射。因此,无论如何这些参数都是重复的。 但是现在对于代码里面的映射方法。
我当时正在考虑将代码放入原始控制器的服务中。然后其他控制器将调用此服务。当然,该服务将具有大量参数+控制器之间的细微差别。还是应该让我像一般服务人员那样在那儿拥有良好的文档,因为当然这里的方法会是一般性的,以后我应该知道它们的用途。
@PostMapping("/testcase") public RedirectView saveResult(Model model, @ModelAttribute("testResultEntity") TestResultEntity testResultEntity, RedirectAttributes redirectAttributes , @RequestParam(required = false) String version , @RequestParam(required = false,defaultValue = "0") String page, @RequestParam(required = false) String operation, Authentication authentication,Locale locale)
{ // here comes long code, which will be used also in other controllers ;
}
答案 0 :(得分:0)
如果所有控制器映射都具有相同的签名,则可以使用通用实现创建父类。
类似这样的东西:
public abstract class BaseAbstractController {
// specific logic per controller
abstract String specific();
public RedirectView save(Model model, @ModelAttribute("testResultEntity") TestResultEntity testResultEntity,
RedirectAttributes redirectAttributes, @RequestParam(required = false) String version,
@RequestParam(required = false, defaultValue = "0") String page, @RequestParam(required = false) String operation,
Authentication authentication, Locale locale) {
// here comes long code, which will be used also in other controllers ;
String specific = specific();
}
}
@Controller
public class TestController extends BaseAbstractController {
@Override
String specific() {
return "something"; // here goes your specific logic;
}
@PostMapping("/testcase")
public RedirectView saveResult(Model model, @ModelAttribute("testResultEntity") TestResultEntity testResultEntity,
RedirectAttributes redirectAttributes, @RequestParam(required = false) String version,
@RequestParam(required = false, defaultValue = "0") String page, @RequestParam(required = false) String operation,
Authentication authentication, Locale locale) {
return save(model, testResultEntity, redirectAttributes, version, page, operation, authentication, locale);
}
}