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でセッターとゲッターコントローラーを実行するためのベストプラクティスの方法は何ですか?

4

1 に答える 1

0

実際にはベストプラクティスではありませんが、これは私が使用したものです:

gets のメソッド名 - 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(...){
    }

 }
于 2012-07-09T18:26:51.510 に答える