Мы переносим приложение struts на Spring MVC и используем аннотацию @Controller для направления страниц на различные вызовы методов.
У меня возникли проблемы с определением хорошей стратегии повторного использования.
В основном мы делаем то же самое на многих наших страницах:
prepareView(..., ...); //Various params -- could likely be standardized
if (!allowedToView()) {
mav.setViewName(injectedErrorPage);
}
performBusinessLogic(..., ...); //Various params -- not seeing how to standardize
persistEntities();
finalizeView(..., ...); // Various params -- could likely be standardized
Какие стратегии используются для создания окончательного метода, который позволит разработчикам "забыть" об этих процессах? Я думал о создании абстрактного класса, но действительно не так, как я вижу, чтобы "стандартизировать" это из-за различий в том, что каждый метод будет принимать.
Например, мы имеем следующее:
@RequestMapping("params="assign", method=RequestMethod.Post)
public ModelAndView assign(@SessionAttribute(value="sessionAttr") Pojo pojo,
@ModelAttribute("command") CommandPojo commandPojo,
BindingResult result) {
//Follows pattern above
}
@RequestMapping()
public ModelAndView filterResults(@SessionAttribute(value="sessionAttr") Pojo pojo,
@RequestAttribute("requestAttr") String requestAttr,
@ModelAttribute("command") CommandPojo2 commandPojo2,
BindingResult result) {
//Follows pattern above
}
Для окончательного метода потребуется, чтобы это было разбито на два POJO (которые затем вызывали описательные функции). Мое непосредственное беспокойство заключается в том, как мы имеем дело с различными параметрами, входящими в этот окончательный метод? Я не вижу никакого способа справиться с этой ситуацией.
Было бы неплохо, если бы мы могли использовать этот "окончательный" метод с защищенными функциями, которые мы могли бы переопределить там, где это необходимо.