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 に答える