1.DDDおよびスプリングデータ
DDD:ドメイン駆動型設計は、複雑な要件の下でのソフトウェア開発の実装方法です。時間があるときに特にDDDを説明します。
Springデータは、DDDの原則(リポジトリなど)に従って多くの場所で設計されています。ここでは、主にDDDの集計およびドメインイベントを実装しています。
以下では、人の骨rootが正常に保存された場合、人の性別属性を通じて統計的なエンティティの性別が更新される場合、男性と女性の数の統計的数を示します。
2。デモ
2.1人の集合ルート
総根として、人にはドメインイベントを公開する機能があります。 Springデータに実装するには、次の2つの方法があります。
のように:
@entity@data@allargsconstructor@noargsconstructor@toString(explude = "domainevents")public class person {@id @generatedValueプライベートLong id;プライベート文字列名;プライベート整数性別; // 1:男性; 2:女性@DomaIneventsコレクション<Object> domainevents(){list <object> events = new ArrayList <Object>(); events.add(new Personsavedevent(this.id、this.gender));イベントを返す; } @afterdomaineventpublication void callbackmethod(){//}}または
@entity@data@allargsconstructor@noargsconstructor@toString(exclude = "domainevents")public classの人は、abstractaggregateroot {@id @generatedValueプライベートID;プライベート文字列名;プライベートインテガージェンダー; // 1:男性; 2:女性の公的人は、afterSonsavedcompleted(){registerEvent(new PersonSavedevent(this.id、this.gender));これを返します。 }}2.2リスニングイベント処理
@componentPublic Class GenderstatProcessor {@Autowired GenderRePository GenderRePository; @async @transactionaleventlistener public void handleafterpersonsavedcomplete(personsavedevent event){genderstat genderstat = genderrepository.findone(1L); if(event.getGender()== 1){genderstat.setMalecount(genderstat.getMalecount()+1); } else {genderstat.setfemalecount(genderstat.getfemalecount()+1); } genderrepository.save(genderstat); }} 3ソースコードアドレス:https://github.com/wiselyman/spring-data-domain-event
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。