я работаю над небольшим проектом, и есть существующий код, который я хочу, чтобы очистить от моих изменений, и поэтому мне нужно расширить аннотированный контроллер, но это не работает:Продлить аннотированные контроллеры в Spring MVC
package a;
@controller
public class BaseController {
// Autowired fields
protected x toExtend() {
// do stuff
}
@RequestMapping(value = "/start")
protected ModelAndView setupForm(...) {
toExtend();
// more stuff
}
}
package b;
@controller
public class NewController extends BaseController {
// Autowired fields
@Override
protected x toExtend() {
super.toExtend();
//new stuff
}
}
Пакет a и b сканируется для контроллеров, и я не могу изменить это. Я действительно не ожидал, что это сработает, потому что @RequestMapping (value = "/ start") избыточно в обоих контроллерах. Из-за этого я получаю исключение.
Итак, мой вопрос заключается в том, можно ли вообще расширять управляемый аннотацией контроллер без изменения BaseController?
Он должен работать, если вы удаляете аннотацию '@ Controller' из вашего' BaseController', если нет причин для ее поддержки там. –
У вас не должно быть 'super.toExtend();' в вашем базовом классе. Не существует метода 'super', называемого' toExtend() ', поскольку родительский класс является' Object'. –
Да, вы правы, это ошибка копирования и я ее отредактировал. –