在大多数情况下,我试图尽可能地对接口进行编码。但是我遇到了Spring Controller方法签名的问题。如果我实际使用Model的界面编写签名,我最终得到以下异常:
BeanInstantiationException: Could not instantiate bean class[PageModel]: Specified class is an interface
当然,我知道它是一个接口,如果我把它改成实际的实现类,它就可以了。但是没有办法对界面进行编码吗?一个注释或什么告诉Spring哪个bean实例化?顺便说一句,我正在使用注释配置。
@RequestMapping("SpecificPageController")
public interface PageController {
@RequestMapping({"", "/load"})
ModelAndView load(@ModelAttribute("model") PageModel model);
}
@Controller
public class SpecificPageController implements PageController {
@Override
public ModelAndView load(final PageModel model) {
}
}
public interface PageModel {
... getters and setters...
}
public class ModelImpl implements PageModel {
... variables, getters, setters...
}
答案 0 :(得分:1)
您可以在控制器方法上使用@ModelAttribute
来实现:
@ModelAttribute
public PageModel getModel() {
return new SpecificPageModel();
}