【发布时间】:2021-04-03 11:07:40
【问题描述】:
如何在服务层编写业务逻辑
【问题讨论】:
标签: java spring-boot business-logic
如何在服务层编写业务逻辑
【问题讨论】:
标签: java spring-boot business-logic
使用参数购物车对象在服务类中创建一个方法并返回响应实体。
然后从控制器类调用方法。并将自动装配的 loginRepository 移动到服务类中。
public ResponseEntity method(Cart cart){
try {
String username = cart.getUserName();
String password = cart.getPassword();
String email = cart.getEmail();
String productname = cart.getProductName();
String price = cart.getPrice();
String discription = cart.getDiscription();
if (!(loginRepository.existsByUserNameAndPassword(username, password) && productname != null)) {
return new ResponseEntity<ApiError>(HttpStatus.NOT_FOUND);
}
if (!productRepository.existsByProductNameAndPriceAndDiscription(productname, price, discription)) {
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
Integer count = cartRepository.countByUserName(cart.getUserName());
System.out.println(count);
cartRepository.save(new Cart(cart.getUserName(), cart.getPassword(), cart.getEmail(),
cart.getProductName(), cart.getPrice(), cart.getDiscription(), count));
return new ResponseEntity<>(new MessageResponse("product Successfully added to cart"));
}
catch (Exception | ApiError e) {
return new ResponseEntity<ApiError>(HttpStatus.BAD_REQUEST);
}
}
在控制器中自动装配服务类并从控制器调用上述方法,如下所示。
service.method(cart);
【讨论】:
这是一个需要简单回答的棘手问题,有多种最佳实践可用于重构或重构代码。 MVC 和 DAO 等设计模式很有帮助。
Spring 建立在流行的 MVC 设计模式之上。 MVC(Model-View-Controller)是一种软件架构模式,它将应用程序分为三个区域:模型、视图和控制器。 控制器有助于拥有能够服务多个不同请求的多动作类。 在控制器中,我们尝试使用“单一职责原则”,它应该将业务处理委托给相关的业务类。
记住这一点,我建议您将整个业务逻辑移动到一个单独的服务类中,并仅将请求和响应的转换保留在控制器中。 以防将来您必须处理所有将在控制器中完成并传递给服务层以实现实际业务功能的标头和查询参数。
我还建议您使用 Spring 的 Exception Advice 来处理异常。
【讨论】: