spring接受控制器中的实体

时间:2016-02-02 12:12:02

标签: java spring spring-mvc

通常,弹簧控制器方法具有以下观点:

@RequestMapping("/url")
public String getUrl([params]){
  // do some stuff..
} 

as params可以接受来自请求的get/post/delete .. params或modellocale等一些标准化的参数。

接下来我的问题是:当调用方法时,可以接受我的参数。像:

@RequestMapping("/profile")
public String getUserProfile(UserEntity user, [params ..]){
  // do some stuff..
} 

此处UserEntity user不是请求正文,而是来自我的数据库的实体。 场景是下一个:在执行方法getUserProfile之前,spring执行一些其他方法,以某种方式从DB获取用户并将其作为方法参数传递。 在现实生活中有没有办法重复这种情况?

2 个答案:

答案 0 :(得分:1)

如果您使用Spring Data,则可以这样做。请参阅文档:http://docs.spring.io/spring-data/commons/docs/current/reference/html/#core.web

基本上,您需要做的是将id添加为参数,然后Spring Data将使用该ID从数据库中获取实体并将其传递给方法:

@RequestMapping("/{id}")
public String showUserForm(@PathVariable("id") User user) {}

要启用该功能,您必须将注释@EnableSpringDataWebSupport放到@Configuration

答案 1 :(得分:0)

检查here

我们可以使用MVC拦截器。您需要修改Interceptor实现。检查请求URL模式,如果匹配,则调用返回UserProfile对象的方法。希望这会有所帮助。