我现在正在使用 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";
}
}
如果我创建一个需要 curd 操作的新简单模型,我将不得不创建一个新控制器,一个手动复制粘贴的新 dao。
所以我想知道我是否可以找到或创建一个可以像 rails 一样生成控制器和 dao 等的工具?
有什么工具可以开箱即用吗?如果没有,我可以创建它,但是现在,我只是想如果我必须创建这种工具,我可能只是做一些字符替换,也就是说,为控制器和 dao 创建一个公共模板,然后替换一些东西因此,但我想知道如何处理包/导入/问题,以及哪种语言更好(java 或 ruby)?
顺便说一句,请不要为我推荐 play!framework。我不喜欢它。因为我只想使用spring mvc。所以该工具将只关注基于 Spring 3 的控制器和 dao。
有什么建议吗?