在Domain Driven Design中若何区分各类Service?
在DDD中,service有三种类型
Domain Service
Domain Service: 用于放置范畴对象相干的营业逻辑,这些营业逻辑平日并不合适放到entity中,也不是常见到的CRUD(这些应当放到Repository), 将Domain Service 和Domain Objects放到一路是合理的,它们都是存眷于domain相干的营业逻辑。在Domain Service中可以应用注入repository的方法来应用entity对应的repository。
一个藏书楼有三个entity:Book, Client,Inventory, 当把一本书借给一个客户时,就对应了一个Domain Service。在一个例子,在Eric Evans的《Domain Driven Design》书中,转账办事(FundsTransferService)也是一种domain service,它涉及到帐号BankAccount,然则并不合适放到BankAccount中。
Application Service
Application Service: 用于为应用外的client或consumer供给给用级其余办事,比如一个外部客户端(法度榜样)须要应用某个entity的CRUD时,这些办事法度榜样放到Application Service。
Application Service平日会应用Domain Service和repository来处理外部的请求。常见的场景是,大年夜repository中拿到一些domain objects, 然后履行某些操作,在将其放回repository(或者不放), Application Service对应着大年夜部分用户应用处景,在写一个应用时,可以先大年夜Application service写起,如许可以很好界定应用的功能和范围。repository固然可以在某些场景下注入到domain service中,然则更常见的是注入到applicatinoservice中。
Infrastructure service
还有一种Infrastructure service:用于抽象一些技巧问题,比如消息队列,邮件办事
具编制子spring-petclinic
【编辑推荐】
- 爱数新版分财揭捉?护筹划周全融入大年夜型机构
- 飞康颜军:分层存储有陷阱 VTL备份更具优势
- 虚拟化存储解决筹划优化分层存储
- 存储极客:主动分层存储PK. SSD缓存
- 若何根据数据冷热水等分层存储,让HDFS更高效?
如许带来的好处带来更好的模块化构造,有便于后期的扩大和保护,比如改换数据库实现时,我们仅仅须要处理DAO层的内容就好了。并且,当营业逻辑比较复杂的时刻,比如有很多申报要出的时刻,Service层就供给了一个很好的空间来实现这些代码。
推荐阅读
MySQL等传统关系型数据库弱爆了!GPU数据库才是未来趋势!
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 数据库市场似乎已经良久没有足以撼动MySQL地位的数据库出现了,我们习惯于看到MySQL占据各大年夜数据库排行>>>详细阅读
本文标题:Spring 中的注解与分层思想
地址:http://www.17bianji.com/lsqh/40080.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示