我使用spring boot并使用如下方法创建api:
@RestController
@RequestMapping("/api/products/")
@Api(value = "ProductControllerApi",produces = MediaType.APPLICATION_JSON_VALUE)
public class ProductController {
@PostMapping
public ResponseEntity<ProductDto> createProduct(@RequestBody Product product) {
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(product.getId()).toUri();
return ResponseEntity.created(location).body(productService.createProduct(product));
}
}
但是,当使用设备的用户同时调用我的方法( / api / products / )时,它将使用相同的数据重复创建。示例:使用创建用户时看起来像 { “名称”:“三星” “ cost”:“ 26 $” }
它在数据库中创建两个具有相同数据的记录。如何检测来自不同来源的重复数据(例如:用户使用两个手机并以相同的方法同时调用并创建相同的数据)。如何避免这种情况,并且如果它使用相同的数据调用同一时间,则只会向数据库中插入一条记录
答案 0 :(得分:4)
这对于Spring Boot而言不是问题,而对于您的持久层而言。最佳实践是对数据库表进行建模,以使两个相同的请求将创建完全相同的主键。然后,您的应用程序代码将在事务提交时处理来自DB层的任何异常。