2012-07-09 8 views
0

J'ai le code suivant je fais juste un PoC avec SpringMVC ...SpringMVC getter setter meilleures pratiques

@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); 
} 

Comme vous pouvez le voir, cela crée un problème car les deux signatures de méthode sont les même. Quelle est la meilleure façon de les diviser car les annotations semblent dériver les fonctionnalités plutôt que les noms des méthodes. Est-ce que les noms de méthodes peuvent être quelque chose? Quel est le meilleur moyen pour SpringMVC de faire des contrôleurs setter et getter?

Répondre

0

Pas vraiment une bonne pratique, mais ce que je l'ai utilisé:

nom de la méthode

pour GETS - soit list (pour une liste) ou show (pour un article)

nom de la méthode pour les jeux - update ou create selon que vous mettez à jour un élément ou la création d'un nouvel élément

les noms de méthodes peuvent être quelque chose, il est l'annotation @RequestMapping qui assure que la bonne méthode est appelée, ayant des méthodes mis en correspondance à base de REST est considéré ag Bien que la pratique soit bonne - pensez à dire un utilisateur de domaine, un contrôleur RESTFUL ressemblerait à ceci:

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

}