私は現在 spring mvc3 を使用していますが、コントローラーのほとんどが同じロジックを所有していることがわかりました。例:
ポストコントローラー:
package com.king.controller;
@Controller
@RequestMapping("/posts")
public class PostController {
@Autowired
private PostDao postDao;
// GET /posts /posts.json
@RequestMapping(value = { "" }, method = RequestMethod.GET)
public String index(Model model) {
model.addAttribute("posts", postDao.list());
return "posts/index";
}
// GET /posts/1 GET /posts/1.json
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String show(@PathVariable int id, Model model) {
Post post = postDao.query(id);
if (post != null) {
model.addAttribute("post", post);
return "posts/show";
} else
throw new RuntimeException("not found");
}
// GET /posts/new
@RequestMapping(value = "/new", method = RequestMethod.GET)
public String newForm(Model model) {
model.addAttribute(new Post());
return "posts/new";
}
// GET /posts/1/edit
@RequestMapping(value = "/{id}/edit", method = RequestMethod.GET)
public String edit(@PathVariable int id, Model model) {
Post post = postDao.query(id);
if (post != null) {
model.addAttribute(post);
return "posts/edit";
} else
throw new RuntimeException("not found");
}
// POST /posts /posts.json
@RequestMapping(value = "", method = RequestMethod.POST)
public String create(@Valid Post post, BindingResult result) {
if (!result.hasErrors()) {
postDao.add(post);
return "redirect:/posts";
} else {
return "posts/new";
}
}
// PUT /posts/1 /posts/1.json
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public String update(@PathVariable int id, @Valid Post post, BindingResult result, RedirectAttributes redirectAttrs) {
if (!result.hasErrors()) {
post.setId(id);
postDao.update(post);
return "redirect:/posts/" + id;
} else {
return "posts/edit";
}
}
// DELETE /posts/1 /posts/1.json
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public String destroy(@PathVariable int id, RedirectAttributes re) {
Post p = new Post(id, "", "");
postDao.delete(p);
return "redirect:/posts";
}
}
カード操作が必要な新しい単純なモデルを作成する場合、新しいコントローラー、手動でコピーして貼り付ける新しい dao を作成する必要があります。
それで、レールのようにコントローラーやdaoなどを生成できるツールを見つけたり作成したりできるのだろうか?
すぐに使用できるツールはありますか? そうでない場合は、作成できますが、この種のツールを作成する必要がある場合は、何か文字の置き換えを行う、つまり、コントローラーと dao のパブリック テンプレートを作成し、何かを置き換えるだけでよいと思いました。それに応じて、しかし、パッケージ/インポート/問題をどのように処理するか、およびどの言語が優れているか(JavaまたはRuby)が気になりますか?
ところで、私には play!framework を勧めないでください。私はそれが好きではありません。spring mvc を使いたいだけなので。したがって、このツールは、Spring 3 に基づくコントローラーと dao のみに焦点を当てます。
なにか提案を?