数据域事件怎么在春天中使用

  介绍

本篇文章为大家展示了域事件怎么在春天数据中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强> 1。DDD与弹簧数据

DDD:领域驱动设计(领域驱动设计)是复杂需求下软件开发的实现方式。有时间我将专门来讲解一下DDD。

春数据在很多地方都是按照DDD原则进行的设计(如库),这春天里数据主要是实现了DDD的聚合和域事件:

<李>

总:一系列可以看成单一单元的领域对象的组合。如订单(订单)和购物清单(单项)都是单独的对象,但是将他们当成一个独立的单元(聚合)。每个总都有一个总根,任何和外部交互应该只能通过聚合根,这样聚合根就可以确保聚合的完整性。一个聚合内部具有事务(数据一致性)边界。

<李>

域事件:聚合之间为了保证数据的一致性,使用事件驱动架构(事件驱动体系结构)来实现数据的最终一致性(最终一致性)。而这些事件是通过聚合根发布的域事件。

下面我们演示一个当人这个聚合根保存成功后,通过的人的性别属性对统计实体GenderStat更新男女性别的统计数量。

<强> 2。演示

2.1人聚合根

人作为聚合根具备发布领域事件的能力,在春天数据下可以有两种实现方式:

<李>

——继承AbstractAggregateRoot,并使用其registerEvent()方法注册发布事件

<李>

——使用@DomainEvents注解方法发布事件

如:

@ entity   @ data   @AllArgsConstructor   @NoArgsConstructor   @ToString (=exclude “domainEvents")   public  class  Person  {   ,@ id   ,@GeneratedValue   ,private  Long  id;   ,private  String 名称;   ,private  Integer 性别;//1:男性;2:女性      ,@DomainEvents   ,Collection domainEvents (), {   List<才能;Object>,事件=,new  ArrayList ();   events.add才能(new  PersonSavedEvent (this.id this.gender));   return 才能;事件;   ,}      ,@AfterDomainEventPublication   ,void  callbackMethod (), {   ,//,}   }

@ entity   @ data   @AllArgsConstructor   @NoArgsConstructor   @ToString (=exclude “domainEvents")   public  class  Person  extends  AbstractAggregateRoot {   ,@ id   ,@GeneratedValue   ,private  Long  id;   ,private  String 名称;   ,private  Integer 性别;//1:男性;2:女性      ,public  Person  afterPersonSavedCompleted () {   registerEvent才能(new  PersonSavedEvent (this.id this.gender));   return 才能;;   ,}   }

2.2监听事件处理

@ component   public  class  GenderStatProcessor  {   ,@ autowired   ,GenderRepository  genderRepository;      ,@Async   ,@TransactionalEventListener   ,public  void  handleAfterPersonSavedComplete (PersonSavedEvent 事件){      GenderStat 才能;GenderStat =, genderRepository.findOne(1升);   如果才能(event.getGender ()==1) {   ,,genderStat.setMaleCount (genderStat.getMaleCount () + 1);   }else {才能   ,,genderStat.setFemaleCount (genderStat.getFemaleCount () + 1);   ,,}   genderRepository.save才能(genderStat);   ,}   }

上述内容就是域事件怎么在春天数据中使用,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

数据域事件怎么在春天中使用

Copyright © 2020-2023 feiqueyun.cn. All Rights Reserved. 肥雀云_南京肥雀信息技术有限公司版权所有 南京肥雀信息技术有限公司 苏ICP备16063723号-5