qq12547345
coder_小康
采纳率50%
2019-12-19 17:09

如何将复杂的业务逻辑放在一个Service层方法中?

5
已采纳

按照 Spring 事务管理的要求,事务都是加在 Service 层上,Controller 层只调用一个 Service 方法处理业务。

现在我比较疑惑的是,比如我某个业务,需要在 用户、组织机构、商品 等不同的 Service 方法上分别进行处理,这种该如何放在同一个 Service 方法中?

如果我在同一个 Service 类中注入这多个模块的 Service ,岂不是又增加了代码的耦合度?感觉很矛盾。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • weinichendian 谦奕爸爸 2年前

    兄弟听过领域驱动设计没有,简单点可以分为四层分别是接口层,应用层,业务层,持久层,你这种不就是单个业务单个业务层封装,大业务放上一层应用层面,应用层就是一堆业务的集合,满足特定业务需求,这种耦合实为正常耦合,不想代码处理,那就sql呗,有业务联系一条sql也能跑出来

    点赞 评论 复制链接分享
  • u014138665 林夕77 2年前

    你可以看看事务传播特性

    点赞 1 评论 复制链接分享
  • fuyangrong fuyangrong 2年前

    你应该在service类中注入其他模块的dao吧。业务层如果你只处理当前模块的事情,那还要service层干什么,直接全都写在dao岂不是更好?

    点赞 2 评论 复制链接分享
  • loney_wolf 轻点 别打脸 2年前

    接口+设计模式。用户,组织,机构,商品,不在同一个维度,归纳为不同板块,单独对外提供接口服务。

    或者使用命令模式,定义用户,组织,机构,商品的基础属性,根据需要调取实现不同的业务方法。

    代码耦合完全避免未免有点不合实际,只是在开发中尽量避免

    点赞 1 评论 复制链接分享
  • weixin_36837739 weixin_36837739 2年前

    以我的理解 可以利用设计模式中的 工厂模式来统一管理 不同功能的service,这样代码的扩展性也好点

    点赞 1 评论 复制链接分享