我在一个小的项目工作,有一些现有的代码,我想保持从我的变化干净,所以我需要延长一个注解控制器,但是,这并不工作:扩展注解控制器
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的情况下扩展这样的注解驱动控制器?
它应该工作,如果你从'BaseController'中删除了'@ Controller'注释,除非有理由必须在那里维护它。 – 2013-04-09 16:35:38
你的基类中不应该有'super.toExtend();'。由于父类是Object,因此没有'super'方法叫'toExtend()'。 – 2013-04-09 16:37:44
是的你是对的这是一个复制粘贴错误,我编辑它。 – 2013-04-09 17:01:20