java—如何在SpringBoot中编写业务逻辑

bbmckpt7  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(220)

如何在服务层编写业务逻辑

cyej8jka

cyej8jka1#

这是一个棘手的问题,有一个简单的答案,有多个最佳实践太重构或重组代码。像mvc和dao这样的设计模式很有用。
spring基于流行的mvc设计模式。mvc(model-view-controller)是一种软件体系结构模式,它将应用程序分为三个领域:模型、视图和控制器。控制器有助于创建能够服务多个不同请求的多操作类。在controller中,我们尝试使用“单一责任原则”,它应该将业务处理委托给相关的业务类。
记住这一点,我建议您将整个业务逻辑移到一个单独的服务类中,并且只保留来自控制器中的请求和响应的转换。在将来的情况下,您必须处理标头和查询参数,这些都将在控制器中完成,并传递到服务层以实现实际的业务功能。
我还建议您使用spring的异常建议来处理异常。

biswetbf

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);

相关问题