Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringMVC对服务层的需求是什么?推荐什么样的逻辑?_Java_Spring Mvc - Fatal编程技术网

Java SpringMVC对服务层的需求是什么?推荐什么样的逻辑?

Java SpringMVC对服务层的需求是什么?推荐什么样的逻辑?,java,spring-mvc,Java,Spring Mvc,(但据我所知,它是mediator b/w控制器和DAO层。)或者我们可以直接在控制器中获取DAO依赖项,这是好的实践吗???如下所示 @Controller public class HomeController { // @Autowired // private UserServiceImpl userService; @Autowired private UserDAOImpl userDAOService; @RequestMappin

(但据我所知,它是mediator 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(); 
      ............
         }
   }

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


当您有一个更大的应用程序时,特别是当这些服务执行不同的角色时,服务层将起到帮助作用。例如,如果您的业务是制造业,并且您的库存服务收到大量流量,那么您可能会将其拆分为一个在其自己的可部署服务中的服务,并将您的用户管理和营销放到一个单独的可部署服务中。像这样拆分服务的好处是,您可以独立地扩展繁忙的服务。例如,如果您在AWS上运行,则更明智的做法是单独扩展清单服务,而不是只因为一个应用程序一直被调用,就扩展整个应用程序。

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


当您有一个更大的应用程序时,服务层将起到帮助作用,尤其是当这些服务执行不同的角色时。例如,如果您的业务是制造业,并且您的库存服务收到大量流量,您可以将其拆分为一个具有自己可部署功能的服务,并将您的用户管理和营销置于一个单独的可部署服务。像这样将服务分开的好处是,您可以独立地扩展繁忙的服务。例如,如果您在AWS上运行,则更合理的做法是单独扩展资源清册服务,而不是仅仅因为一个部分一直被调用而扩展整个应用程序。

通常这是一个坏消息练习混合, 控制器和Dao或控制器和服务

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

就业务逻辑而言,这里有一个从ATM取款的例子

  • 首先你要插入你的ATM卡
  • 然后输入您的金额
  • 然后输入PIN
  • 最后,您的交易被处理

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

    一般来说,混用是不好的做法, 控制器和Dao或控制器和服务

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

    就业务逻辑而言,这里有一个从ATM取款的例子

  • 首先你要插入你的ATM卡
  • 然后输入您的金额
  • 然后输入PIN
  • 最后,您的交易被处理

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

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

    假设控制器类中有100个api,20个dao方法为它们提供服务

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

    你必须更换100个控制器,对吗

    因此,如果有20个服务方法调用这20个dao方法

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

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

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

    假设控制器类中有100个api,20个dao方法为它们提供服务

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

    你必须更换100个控制器,对吗

    因此,如果有20个服务方法调用这20个dao方法

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

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

    你想经历这一切,也许这对你有好处。你想经历这一切也许这对你有好处。