如何在Spring Boot中编写业务逻辑

问题描述 投票:0回答:2

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

java spring-boot business-logic
2个回答
0
投票

在服务类中创建一个带有参数购物车对象的方法并返回响应实体。

然后调用控制器类的方法。并将自动连接的 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);

0
投票

这是一个很难得到简单答案的问题,因为有多种最佳实践可用于重构或重组代码。 MVC 和 DAO 等设计模式很有帮助。

Spring建立在流行的MVC设计模式之上。 MVC(模型-视图-控制器)是一种软件架构模式,它将应用程序分为三层/部分:模型、视图和控制器。 控制器有助于拥有能够服务多个不同请求的多操作类。 在控制器内(以及其他任何地方),我们尝试使用“单一职责原则”,它应该将业务处理委托给相关的业务类。

记住这一点,我建议您将所有业务逻辑移至单独的服务类,并仅保留控制器中请求和响应的转换。 如果您必须处理标头和查询参数,这一切都将在控制器中完成并传递到服务层,即实际的业务功能。

我还建议您使用 Spring 的 Exception Advice 来处理异常。

© www.soinside.com 2019 - 2024. All rights reserved.