0

在大多数情况下,我正在尝试尽可能多地对接口进行编码。但是我遇到了 Spring Controller 方法签名的问题。如果我真的使用模型的接口编写签名,我最终会得到以下异常:

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...
}
4

1 回答 1

1

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

@ModelAttribute 
public PageModel getModel() {
    return new SpecificPageModel();
}
于 2012-09-26T16:19:41.330 回答