【发布时间】:2015-02-05 20:34:47
【问题描述】:
我正在检查我的项目代码并在控制器中找到以下方法。在网上我发现controller 用于接收请求并提供响应。 Service 层用于业务逻辑,Dao 层用于数据 CRUD 相关操作。
在下面的方法中,我可以看到业务逻辑。现在我没有得到应该将哪些代码移到服务层或以下是好的。
我正在审查代码,所以我需要提供 cmets,但我很困惑。
@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;
}
【问题讨论】:
-
对我来说唯一有问题的部分是:
if(checkActive(application)){ status = FormBeanValidator.encodeStatus(application.getStatus());。但我看到已经有一个分离:applicationService.addApp(application)这样可能就足够了 -
我的问题甚至是“if”检查,即 if(checkActive(application)) 是否应该在控制器中。因为这是一个业务逻辑。
-
嗯,这取决于
checkActive做了什么。如果它暗示了一个强大的业务逻辑,你应该把它移到服务层。
标签: java spring spring-mvc coding-style service-layer