Spring MVC を使用するようにレガシー アプリケーションをリファクタリングしています。すべてのコントローラー (レガシー) は Model 型のオブジェクトを返し、レガシー ディスパッチャーは model.getContent() の出力を書き込みます。メソッド getContent は内部処理を行い、json 文字列を返します。何百ものコントローラーがあり、それらを書き直したくありません。カスタム ビュー ハンドラーを記述して、Spring サーブレット構成に含めることは可能ですか?
サンプルコントローラー:
public UserList extends BasicAction {
@Autowired
UserService userService;
@Autowired
UserCommand userCommand;
@Override
public Model getModel(Request req, Response resp)
throws ServletException, IOException {
Model model = new Model();
List<User> users;
try {
users = userService.getUsers((UserCriteria)userCommand.getResult());
model.addCollection(users);
model.setWrapper(new UserWrapper());
} catch (ValidationException e) {
e.printStackTrace();
} catch (WebCommandException e) {
e.printStackTrace();
}
return model;
}
}
@Controller とアノテートする予定です。@RequestMapping を指定するか、xml 構成で基本クラス BasicAction (レガシー mvc) を削除します。私は最近、このプロジェクトに春を導入し、依存性注入と要求スコープ コマンド オブジェクト (要求ラッパー) を使用するようにリファクタリングしました。