我有一个@RestController
,其中有一堆Rest端点作为方法。
@RequestMapping(path="",method=RequestMethod.POST)
public void create(Principal principal) {
String userName = principal.getName();
User user = UsersRepository.loadUser(userName);
//....
}
@RequestMapping(path="/{groupId}",method=RequestMethod.DELETE)
public void deleteGroup(@PathVariable String groupId, Principal principal) {
String userName = principal.getName();
User user = UsersRepository.loadUser(userName);
//....
}
在每种方法中,我都要重复这段代码:
String userName = principal.getName();
User user = UsersRepository.loadUser(userName);
有没有办法不在每个方法中重复这个并在类中获取它,并在每个方法中使用它?
答案 0 :(得分:3)
1)非常基本,但为什么不简单地用私有方法提取它:
public User getUser(Principal principal){
String userName = principal.getName();
User user = UsersRepository.loadUser(userName);
//....
return user;
}
你可以这样写:
@RequestMapping(path="",method=RequestMethod.POST)
public void create(Principal principal) {
User user = getUser(principal);
//....
}
2)更高级:您可以使用Spring拦截器读取请求,加载用户并将其连接到具有请求范围的bean中。