2012-07-09 55 views
0

我有下面的代码我只是在做与上用SpringMVC的PoC ...的getter用SpringMVC二传手最佳实践

@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

不是一个真正的最佳实践,但是这是我曾经用过:

方法名称得到 - 无论是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(...){ 
    } 

}