【问题标题】:what is need of service layer in spring mvc ? what kind of logic recommended?spring mvc中的服务层需要什么?推荐什么样的逻辑?
【发布时间】:2016-09-26 03:24:06
【问题描述】:

(但据我所知,它是中介 b/w 控制器和 DAO 层。)或者我们可以直接在控制器中获取 dao 依赖项,这是一种好习惯吗? ???如下图所示

@Controller
public class HomeController {   

    // @Autowired
    // private UserServiceImpl userService;
    @Autowired
     private UserDAOImpl userDAOService;

   @RequestMapping(value = "login", method = RequestMethod.GET)
public String login(..){
   // String res = userService.someOperation();
      String res = userDAOService.someOperation(); 
      ............
         }
   }

【问题讨论】:

标签: java spring-mvc


【解决方案1】:

我们需要服务层的一个很好的原因是松散耦合:

假设您的控制器类中有 100 个 api 和 20 个为它们服务的 dao 方法。

现在,如果您直接在控制器中调用 dao 方法,并且稍后您希望有不同的 dao 方法为这些控制器服务。

您必须更改所有 100 个控制器,对吗?

如果有 20 个服务方法调用这 20 个 dao 方法。

现在,如果您想更改为这 100 个控制器提供服务的 dao 方法,只需更改服务方法(即 20 个方法)以指向新的 doa 方法,而不是更改 100 个控制器类。

这就是实现松散耦合的方式,也是一种更好的编程方式。 希望这对你有帮助:)

【讨论】:

    【解决方案2】:

    通常将 DAO 直接放入控制器是一个坏主意,除非控制器非常简单(如在一种方法中少于 10 行 - 可能是单元测试)。这并不一定意味着您绝对必须将服务拆分为单独的可部署项。对于许多较小的项目,“服务”是直接与应用程序的其余部分打包的接口。

    当您有一个更大的应用程序时,服务层会提供帮助,尤其是当这些服务执行不同的角色时。例如,如果您的企业是制造业,而您的库存服务接收大量流量,您可以将其拆分为一个可部署的服务,并将您的用户管理和营销放入单独的可部署中。像这样拆分服务的好处是您可以独立扩展繁忙的服务。例如,如果您在 AWS 上运行,则自行扩展库存服务比扩展整个应用程序更有意义,因为它一直被调用。

    【讨论】:

      【解决方案3】:

      通常混合是一种不好的做法, 控制器和道或控制器和服务。

      使用 DAO 的主要原因是将数据库功能与业务操作/逻辑分开。 在项目中使用 DAO 和服务也可以实现松散耦合,即(减少相互依赖)

      就业务逻辑而言,这是从 ATM 取款的示例

      1. 首先插入 ATM 卡。
      2. 然后输入您的金额。
      3. 然后输入您的 PIN。
      4. 然后您的交易最终得到处理。

      这个流程就是你的业务逻辑。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-20
        • 2013-03-12
        • 2018-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-27
        • 1970-01-01
        相关资源
        最近更新 更多