package Ġcom . xx sc loud . core . domain ĊĊ Ċ import Ġcom . xx sc loud . core . Spring Context Utils Ċ import Ġorg . springframework . aop . framework . A op Context Ċ import Ġorg . springframework . context .* Ċ import Ġorg . springframework . context . annotation . Enable Aspect J Auto Proxy Ċ import Ġjava . io . Serializable ĊĊ Ċ @ Enable Aspect J Auto Proxy ( proxy Target Class Ġ= Ġtrue , Ġexpose Proxy Ġ= Ġtrue ) Ċ abstract Ġclass ĠBase Domain Aggregation < Root Ġ: ĠSerializable > Ġ: ĠApplication Context Aware , ĠApplication Event Publisher Aware , ĠDomain Aggregation < Root > Ġ{ ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġapplication Context : ĠApplication Context ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġapplication Event Publisher : ĠApplication Event Publisher ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġget Bean ( clazz : ĠClass < T >): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Base Domain Aggregation . application Context Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBase Domain Aggregation . application Context !!. getBean ( clazz ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ ĠSpring Context Utils . getBean ( clazz ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget This (): ĠAny Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠA op Context . current Proxy () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġpublisher ( application Event : ĠApplication Event ): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBase Domain Aggregation . application Event Publisher ?. publish Event ( application Event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġset ApplicationContext ( application Context : ĠApplication Context ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBase Domain Aggregation . application Context Ġ= Ġapplication Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( obj : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( obj Ġis ĠBase Domain Aggregation <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( obj Ġas ĠBase Domain Aggregation < *> ). root Ġ== Ġthis . root ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġset Application Event Publisher ( application Event Publisher : ĠApplication Event Publisher ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBase Domain Aggregation . application Event Publisher Ġ= Ġapplication Event Publisher ĊĠĠĠ Ġ} Ċ Ċ } Ċ