SpringMVC getter setter最佳实践

时间:2012-07-09 18:10:29

标签: spring spring-mvc

我在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控制器的最佳实践方法是什么?

1 个答案:

答案 0 :(得分:0)

不是最佳做法,但这是我用过的:

获取的方法名称 - list(列表)或show(项目)

根据您是要更新商品还是创建新商品,

集合的方法名称 - updatecreate

方法名称可以是任何东西,它是@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(...){
    }

 }