我在SpringMVC的PoC上有以下代码...
@RequestMapping(value = "/getUser", method = RequestMethod.GET)
@ResponseBody
public User data(Locale locale, Model model, User user) {
logger.info("getUser controller loaded...");
return userService.getById(user.getId());
}
@RequestMapping(value = "/setUser", method = RequestMethod.GET)
@ResponseBody
public void data(Locale locale, Model model, User user) {
logger.info("setUser controller loaded...");
userService.addUser(user);
}
正如您所看到的,这会产生一个问题,因为两个方法签名都是相同的。分解它们的最佳方法是什么,因为注释似乎是派生功能而不是方法名称。方法名称可以是什么? SpringMVC中做setter和getter控制器的最佳实践方法是什么?
答案 0 :(得分:0)
不是最佳做法,但这是我用过的:
获取的方法名称 - list
(列表)或show
(项目)
集合的方法名称 - update
或create
方法名称可以是任何东西,它是@RequestMapping
注释,可确保调用正确的方法,但基于REST的映射方法被认为是一种很好的做法 - 考虑说像用户这样的域,一个RESTFUL控制器看起来像这样:
@RequestMapping("/users")
@Controller
public class UserController{
@RequestMapping(produces="text/html")
public String list(){
}
@RequestMapping(value="/{id}", produces="text/html")
public String show(){
}
@RequestMapping(method=RequestMethod.POST, produces="text/html")
public String create(@Valid User user, BindingResult bindingResult, Model model){
}
@RequestMapping(method=RequestMethod.PUT, produces="text/html")
public String update(@Valid User user, BindingResult bindingResult, Model model){
}
@RequestMapping(value="/{id}", method=RequestMethod.DELETE, produces="text/html")
public String delete(...){
}
}