我正在查看我的项目代码,并在控制器中找到了以下方法。在网上我发现controller
用于接收请求并提供响应。 Service
图层用于业务逻辑,Dao
图层用于与数据CRUD相关的操作。
在下面的方法中,我可以看到业务逻辑。现在我没有得到哪些代码应该移动到服务层或者下面是好的。
我正在审核代码,所以我需要提供评论,但我很困惑。
@RequestMapping(value = "/admin/app", method = RequestMethod.POST)
public ModelAndView saveApp(
@ModelAttribute("application") @Validated Application application,
BindingResult result) {
ModelAndView model = new ModelAndView();
ApplicationFormValidator formValidation = new ApplicationFormValidator();
boolean messageFlag = false;
String operationalStatus = null;
formValidation.validate(application, result);
if (result.hasErrors()) {
model.addObject(APPLICATION, application);
model.setViewName(ADD_APP);
} else {
if(checkActive(application)){
status = FormBeanValidator.encodeStatus(application.getStatus());
application.setStatus(status);
// calling service layer and convert model into entity
messageFlag = applicationService.addApp(application);
if (messageFlag) {
Application applicationForm = new Application();
applicationForm.setSuccessMessage(PropertyHandler.getPropertyInstance().getPropertyValue(Constants.SUCCESS_MESSAGE));
model.addObject(APPLICATION, applicationForm);
model.setViewName(ADD_APP);
} else {
application.setErrorMessage(PropertyHandler.getPropertyInstance().getPropertyValue(Constants.ERROR_MESSAGE));
model.addObject(APPLICATION, application);
model.setViewName(ADD_APP);
}
}
else{
application.setErrorMessage(PropertyHandler.getPropertyInstance().getPropertyValue(Constants.OTHER));
model.addObject(APPLICATION, application);
model.setViewName(ADD_APP);
}
}
return model;
}
答案 0 :(得分:1)
代码看起来不错,但我建议进行一些修改:
1)您的checkActive(application)
似乎检查了有关您的业务对象(应用程序)的内容,因此请将其移至服务层。您可以通过移动checkActive()
合并您的checkActive()
方法逻辑方法进入服务层并在applicationService.addApp(application)
内作为本地方法调用。
2)您一直在if
和else
块中将视图名称设置为相同。尝试将此代码移出if-else块,因为它变得多余。< / p>
3)通常只需要将所需的数据从控制器发送到视图。这可以通过创建DTO(数据传输对象)并创建一个将业务对象字段映射到DTO的Converter类来完成。可以查看DTO here
的示例用例答案 1 :(得分:0)
如果您在ApplicationFormValidator