0

我有以下代码,我只是在使用 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 控制器的最佳实践方式是什么?

4

1 回答 1

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(...){
    }

 }
于 2012-07-09T18:26:51.510 回答