스프링 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();'가 없어야합니다. 부모 클래스가'Object'이므로'toExtend()'라는'super' 메쏘드가 없습니다. –
예, 맞습니다.이 파일은 복사 붙여 넣기 오류이며 편집했습니다. –