如何在服务层编写业务逻辑
cyej8jka1#
这是一个棘手的问题,有一个简单的答案,有多个最佳实践太重构或重组代码。像mvc和dao这样的设计模式很有用。spring基于流行的mvc设计模式。mvc(model-view-controller)是一种软件体系结构模式,它将应用程序分为三个领域:模型、视图和控制器。控制器有助于创建能够服务多个不同请求的多操作类。在controller中,我们尝试使用“单一责任原则”,它应该将业务处理委托给相关的业务类。记住这一点,我建议您将整个业务逻辑移到一个单独的服务类中,并且只保留来自控制器中的请求和响应的转换。在将来的情况下,您必须处理标头和查询参数,这些都将在控制器中完成,并传递到服务层以实现实际的业务功能。我还建议您使用spring的异常建议来处理异常。
biswetbf2#
在带有参数cart对象的服务类中创建一个方法并返回响应实体。然后从控制器类调用方法。并将AutowiredLoginRepository移到服务类中。
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); } }
控制器中的autowire服务类,并从控制器调用上述方法,如下所示。
service.method(cart);
2条答案
按热度按时间cyej8jka1#
这是一个棘手的问题,有一个简单的答案,有多个最佳实践太重构或重组代码。像mvc和dao这样的设计模式很有用。
spring基于流行的mvc设计模式。mvc(model-view-controller)是一种软件体系结构模式,它将应用程序分为三个领域:模型、视图和控制器。控制器有助于创建能够服务多个不同请求的多操作类。在controller中,我们尝试使用“单一责任原则”,它应该将业务处理委托给相关的业务类。
记住这一点,我建议您将整个业务逻辑移到一个单独的服务类中,并且只保留来自控制器中的请求和响应的转换。在将来的情况下,您必须处理标头和查询参数,这些都将在控制器中完成,并传递到服务层以实现实际的业务功能。
我还建议您使用spring的异常建议来处理异常。
biswetbf2#
在带有参数cart对象的服务类中创建一个方法并返回响应实体。
然后从控制器类调用方法。并将AutowiredLoginRepository移到服务类中。
控制器中的autowire服务类,并从控制器调用上述方法,如下所示。