Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 用于使用请求对象更新模型的适当层/对象_Spring_Spring Mvc_Architecture - Fatal编程技术网

Spring 用于使用请求对象更新模型的适当层/对象

Spring 用于使用请求对象更新模型的适当层/对象,spring,spring-mvc,architecture,Spring,Spring Mvc,Architecture,使用Sprint,我有一个具有以下标题的端点: @PutMapping("/{productId}") Product updateProduct(@Valid @RequestBody ProductRequest productRequest) { .... 我应该在哪里将字段从ProductRequest复制到现有产品?在服役?为此使用map类?使用产品工厂?在其他地方?根据我的意见,我们应该使用Rest/Mvc控制器层来实现以下功能: 1参数验证 2将传入参数ProductReques

使用Sprint,我有一个具有以下标题的端点:

@PutMapping("/{productId}")
Product updateProduct(@Valid @RequestBody ProductRequest productRequest) { ....

我应该在哪里将字段从ProductRequest复制到现有产品?在服役?为此使用map类?使用产品工厂?在其他地方?

根据我的意见,我们应该使用Rest/Mvc控制器层来实现以下功能:

1参数验证

2将传入参数ProductRequest映射到服务模型产品

3具有服务模型的呼叫服务

4返回结果或错误

因此,在您的情况下,您应该将ProductRequest映射到Product,并将Product路径映射到服务。您可以在本文中找到一个经典示例:

此外,经验法则是使控制器层尽可能薄

@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
@ResponseStatus(HttpStatus.OK)
public void updatePost(@RequestBody PostDto postDto) {
    Post post = convertToEntity(postDto);
    postService.updatePost(post);
}