2017-06-13 5 views
0

i springboot mit dem neuen RxJava2CrudRepository ich verwende beobachtet, dass, wenn ichFrühling RxJava2CrudRepository erst Anruf auf Rückkehr Speichern

parkingContentRepo.save(new ParkingContent()); 

nichts rufen an die DB geschrieben wird. wenn ich

parkingContentRepo.save(new ParkingContent()).blockingGet(); 

nennen wird der Eintrag geschrieben.

vielleicht ist das eine dumme Frage. aber warum sollte ich diesen Aufruf zu blockingGet machen (ich nehme an, abonnieren würde auch funktionieren)?

dies macht die api schwieriger zu bedienen. Wenn jemand den Anruf vergisst, bleibt nichts erhalten.

Antwort

1

Bei der Verwendung von Observables, Flowables oder einer anderen API für reaktive Datenströme müssen Sie berücksichtigen, dass die Vorgänge in den meisten Fällen nicht gestartet werden, es sei denn, Sie abonnieren. In Ihrem Fall ist .blockingGet() intern das reaktive Objekt, das save zurückgibt.

Warum ist das so? Dadurch können Sie problemlos Vorgänge zusammenstellen und gleichzeitig die Fähigkeit beibehalten, die Asynchronität entsprechend Ihren Anforderungen anzupassen.

Dies macht es easier to work with external APIs without blocking, aber schwieriger zu verwenden, wenn Sie sehr isolierte Inseln von asynchronem/reaktivem Code haben.

Verwandte Themen