Spring - 在Controller方法中指定Model的实现类

时间:2012-09-26 13:32:27

标签: spring model-view-controller model controller

在大多数情况下,我试图尽可能地对接口进行编码。但是我遇到了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...
}

1 个答案:

答案 0 :(得分:1)

您可以在控制器方法上使用@ModelAttribute来实现:

@ModelAttribute 
public PageModel getModel() {
    return new SpecificPageModel();
}