found that ApplicationModuleListener is annotated with TransactionalEventListener
so end up publish event under @Transactional
@RequiredArgsConstructor
public class EventPublishingService {
private @NonNull final ApplicationEventPublisher applicationEventPublisher;
@Transactional
public void publishEvent(MyApplicationEvent event) {
applicationEventPublisher.publishEvent(event);
}
}
and this do the magic work.