Spring Boot, H2 und Restschnittstelle synchonisation mit Client

lam_tr

Top Contributor
Hallo zusammen,

ich habe Spring Boot H2 Datenbank der Kalendereinträgen speichert. Über Restschnittstelle kann ich das Laden der Einträge holen. Als Client habe ich eine Android App womit über Rest die Daten geladen werden kann. Ich speichere die Daten auf dem Android Handy mit SQLite.

Im Kalender Tabelle habe ich eine Spalte Source (Handy, Server), das sagt aus von wo der Eintrag gemacht wurde.

Ich benötige einen Weg das Ganze etwas schöner synchronisieren zu können. Vom Server auf Client und umgekehrt. Wie kann ich da einen guten Synchronisationsalgorithmus dafür entwickeln so dass wenn der Server neue Einträge hat, dass ich nicht die kompletten Einträge zum Handy laden muss. Und von Android aus ist es auch nicht sinnvoll den insert direkt auf dem Server zu machen, da die Verbindung nicht immer offen ist. Woher weiß ich auf dem Handy dass die Einträge noch nicht synchronisiert sind? Wäre eine weitere Spalte für Status nicht verkehrt oder?

Könnt ihr mir da ein bisschen auf die Sprünge helfen?

Grüße
lam_tr
 
K

kneitzel

Gast
Wenn die Tabellen, die synchronisiert werden sollen:
- Zeitstempel der letzten Änderung
- UUID damit Records an mehreren Orten unabhängig voneinander neu erstellt werden können.
- Bei Löschung wird nicht sofort gelöscht sondern ein deleted Flag gesetzt.

Dann kann man einfach hin gehen und die Änderungen seit der letzten Synchronisierung laden, sowohl lokal als auch remote. Dabei auch pro Datensatz immer nur die letzte Version (Wenn ein Datensatz 10 Mal geändert wurde, interessiert mich nur die letzte Version!).

Das kann man natürlich auch beliebig in externe Tabellen bringen. Wichtig ist, dass es eine eindeutige Kennzeichnung für alles gibt, die von System zu System unterschiedlich ist.

Wenn man nur ein modify Date hat, dann ist das natürlich wichtig: Das muss also Zeitzonen abdecken und die Geräte müssen eine korrekte Zeit gesetzt haben.

Das ist ggf. problematisch, daher kann man auch einfach alle Änderungen in eine / mehrere Tabellen packen.
Der Client synchronisiert dann einfach ab der Stelle bis zu der er schon gekommen ist.

Richtig interessant wird es natürlich erst bei Kollisionen. Kollisionen kann man noch stark reduzieren, wenn man z.B. jede Änderung eines Feldes berücksichtigt. Also Beispiel AD:
- Administration ändert im AD Eintrag etwas (Telefonnummer, Vorgesetzter, was weiss ich)
- Der User ändert sein Passwort
--> Ein AD Eintrag wurde an unterschiedlichen Domaincontrollern geändert. Da es aber unterschiedliche Felder sind und waren, gab es keine Kollision.
 

lam_tr

Top Contributor
Wenn die Tabellen, die synchronisiert werden sollen:
- Zeitstempel der letzten Änderung
- UUID damit Records an mehreren Orten unabhängig voneinander neu erstellt werden können.
- Bei Löschung wird nicht sofort gelöscht sondern ein deleted Flag gesetzt.

Dann kann man einfach hin gehen und die Änderungen seit der letzten Synchronisierung laden, sowohl lokal als auch remote. Dabei auch pro Datensatz immer nur die letzte Version (Wenn ein Datensatz 10 Mal geändert wurde, interessiert mich nur die letzte Version!).

Das kann man natürlich auch beliebig in externe Tabellen bringen. Wichtig ist, dass es eine eindeutige Kennzeichnung für alles gibt, die von System zu System unterschiedlich ist.

Wenn man nur ein modify Date hat, dann ist das natürlich wichtig: Das muss also Zeitzonen abdecken und die Geräte müssen eine korrekte Zeit gesetzt haben.

Das ist ggf. problematisch, daher kann man auch einfach alle Änderungen in eine / mehrere Tabellen packen.
Der Client synchronisiert dann einfach ab der Stelle bis zu der er schon gekommen ist.

Richtig interessant wird es natürlich erst bei Kollisionen. Kollisionen kann man noch stark reduzieren, wenn man z.B. jede Änderung eines Feldes berücksichtigt. Also Beispiel AD:
- Administration ändert im AD Eintrag etwas (Telefonnummer, Vorgesetzter, was weiss ich)
- Der User ändert sein Passwort
--> Ein AD Eintrag wurde an unterschiedlichen Domaincontrollern geändert. Da es aber unterschiedliche Felder sind und waren, gab es keine Kollision.
Super Zusammenfassung, vielen Dank.

Fragen haben jedoch noch :)
- Zeitstempel der letzten Änderung
Wenn ich mehrere Versionsdatensätze habe, dann ist der Änderungszeitstempel nicht notwendig, sondern der Erstellundsdatum oder?
- UUID damit Records an mehreren Orten unabhängig voneinander neu erstellt werden können.
UUID macht den Datensatz eindeutig, aber was spielt es an der Stelle eine Rolle für mehrere Orte, das habe ich leider noch nicht ganz verstanden.

Dann kann man einfach hin gehen und die Änderungen seit der letzten Synchronisierung laden, sowohl lokal als auch remote. Dabei auch pro Datensatz immer nur die letzte Version (Wenn ein Datensatz 10 Mal geändert wurde, interessiert mich nur die letzte Version!).
Sollen bei Anpassungen einfach ein neuer Datensatz mit einer hochgezählten Versionsnummer gesetzt sein? Wenn ich jetzt 20 Anpassungen gemacht habe, werden dann die 20 Anpassungen zum Client synchronisiert? Sollte in dem Fall eine neue Tabelle für die Anpassungen gemacht werden, so audittrailmäßig?

Der Client synchronisiert dann einfach ab der Stelle bis zu der er schon gekommen ist.
Woher weißt der Client an welcher Stelle er schon gekommen ist?
 

Thallius

Top Contributor
Das Ganze kann man beliebig kompliziert machen und erreicht trotzdem keine 100% tige Sicherheit das die Daten immer korrekt synchronisiert werden. Ich habe mal einen mehrstündigen Vortrag mit Lösungsnansätzen dazu gehört und bin irgendwann ausgestiegen :)

Nur mal als Beispiel: User A ändert offline auf seinem Hany das Datum eine Eintrages und User B gleichzeitig die Teilnehmer. Welche Version ist denn nun die richtige wenn beide wieder online kommen? Eigentlich ja ein merge aus beiden.

Im Prinzip ist aber schon alles gesagt was eine einigermassen brauchbar Lösung darstellt. Jede Row sollte ihren Eingenen Zeitstempel haben wann sie geändert wurde (Theoretisch müßte man sogar für jede Column einen haben)
Kommt das Mobile online spielt es alle Datensätze auf den Server die neuer sind als der entsprechende Eintrag dort und holt danach alle Einträge vom Server die neuer sind als die eigenen in der Offline Datenbank.
Das Ganze würde ich als Bulk-Request machen. Damit kannst du sicher sein, das wenn der eine Insert oder get request geklappt hat auch alle Daten da sind.

Gruß

Claus
 

sascha-sphw

Top Contributor
Wenn ich mehrere Versionsdatensätze habe, dann ist der Änderungszeitstempel nicht notwendig, sondern der Erstellundsdatum oder?
Wenn Du alle Änderungen als separate Tabelle realisierst, dann reicht das Erstellungsdatum diese Eintrags. Hier könntest Du dann auch vermerken was genau geändert wurde und den Merge machen den @Thallius angesprochen hat.
Wenn Du aber nur die letzte Änderung wissen willst hast Du einfach nur ein timestamp der letzten Änderung im eigentlichen Entity.

UUID macht den Datensatz eindeutig, aber was spielt es an der Stelle eine Rolle für mehrere Orte, das habe ich leider noch nicht ganz verstanden.
Wenn Du statt UUID z.B. nur eine fortlaufende ID hättest wäre es ja 1...2...3...4...5. Jetzt erstellt der Client einen neuen Eintrag lokal 6 der Server auch 6 und schon gibt es einen Konflikt, das wird mit UUID nicht so leicht passieren.
 

lam_tr

Top Contributor
Das Ganze kann man beliebig kompliziert machen und erreicht trotzdem keine 100% tige Sicherheit das die Daten immer korrekt synchronisiert werden. Ich habe mal einen mehrstündigen Vortrag mit Lösungsnansätzen dazu gehört und bin irgendwann ausgestiegen :)

Nur mal als Beispiel: User A ändert offline auf seinem Hany das Datum eine Eintrages und User B gleichzeitig die Teilnehmer. Welche Version ist denn nun die richtige wenn beide wieder online kommen? Eigentlich ja ein merge aus beiden.

Im Prinzip ist aber schon alles gesagt was eine einigermassen brauchbar Lösung darstellt. Jede Row sollte ihren Eingenen Zeitstempel haben wann sie geändert wurde (Theoretisch müßte man sogar für jede Column einen haben)
Kommt das Mobile online spielt es alle Datensätze auf den Server die neuer sind als der entsprechende Eintrag dort und holt danach alle Einträge vom Server die neuer sind als die eigenen in der Offline Datenbank.
Das Ganze würde ich als Bulk-Request machen. Damit kannst du sicher sein, das wenn der eine Insert oder get request geklappt hat auch alle Daten da sind.

Gruß

Claus
Wenn ich synchronisieren will, hole ich alle Daten und vergleiche sie dann?
 

lam_tr

Top Contributor
Wenn Du alle Änderungen als separate Tabelle realisierst, dann reicht das Erstellungsdatum diese Eintrags. Hier könntest Du dann auch vermerken was genau geändert wurde und den Merge machen den @Thallius angesprochen hat.
Wenn Du aber nur die letzte Änderung wissen willst hast Du einfach nur ein timestamp der letzten Änderung im eigentlichen Entity.


Wenn Du statt UUID z.B. nur eine fortlaufende ID hättest wäre es ja 1...2...3...4...5. Jetzt erstellt der Client einen neuen Eintrag lokal 6 der Server auch 6 und schon gibt es einen Konflikt, das wird mit UUID nicht so leicht passieren.
Danke das mit der UUID, hast du mir deutlich gemacht. Trotzdem frage ich mich, wenn die Daten synchronisiert werden, ab welcher Stelle mache ich das von Client aus.

Wenn ich jetzt zum Beispiel auf mein Smartphone 100 Datensätze schon vom Server geholt habe, der Server hat jetzt 150 insgesamt, davon sind 50 Anpassungen. Hole ich sie alle zu meinem Android Client und vergleiche sie anhand von UUID und inserte dann die neuen??
 
K

kneitzel

Gast
Also die einzelnen Punkte mal kurz durchgegangen:
Wenn ich mehrere Versionsdatensätze habe, dann ist der Änderungszeitstempel nicht notwendig, sondern der Erstellundsdatum oder?
Wenn Du jeden Datensatz nur schreibst und eine Änderung ein neuer Datensatz ist, dann ist das korrekt. Aber Du kannst nachvollziehen, was Änderungen zu einem Objekt sind oder so nehme ich mal an... Aber wenn ich das so richtig verstanden habe, dann ist das so, wie Du schreibst.
UUID macht den Datensatz eindeutig, aber was spielt es an der Stelle eine Rolle für mehrere Orte, das habe ich leider noch nicht ganz verstanden.
Damit wollte ich nur auf die Thematik der auto increment IDs aufmerksam machen. Diese IDs taugen nichts in einem Umfeld, in dem repliziert wird.
Ist ja auch klar: Wenn wir beide Datensätze anlegen und wir fortlaufend nummerieren, dann schauen wir und erstellen ggf. beide die gleiche Nummer. Bei einer UUID können zwei Stellen eine neue ID erzeugen und man erhält unterschiedliche IDs.
(Da gibt es aber auch Lösungen für. Es kann einen Master geben und jeder holt sich dann Bereiche für neue Datensätze. Dann erzeugt jeder aus dem ihm zugewiesenen Bereich Nummern und es gibt auch keine doppelten ...)
Sollen bei Anpassungen einfach ein neuer Datensatz mit einer hochgezählten Versionsnummer gesetzt sein? Wenn ich jetzt 20 Anpassungen gemacht habe, werden dann die 20 Anpassungen zum Client synchronisiert? Sollte in dem Fall eine neue Tabelle für die Anpassungen gemacht werden, so audittrailmäßig?
Also man kann ohne externe Tabelle auskommen und die notwendigen Daten komplett in der original Tabelle halten. Das ist ein Design Frage. Aber ich würde da immer weitere Tabellen erstellen. Und ja - das geht Richtung Audit, denn es geht um das Gleiche Ziel: Nachverfolgung von Änderungen.

Woher weißt der Client an welcher Stelle er schon gekommen ist?
Der Client muss natürlich eine entsprechende Config vorhalten.

- Wenn er sich zum ersten Mal verbindet, dann zieht er eine komplette Tabelle ab und merkt sich den Endzeitpunkt. Das würde ich wie folgt machen:

a) Letzten Record der Sync-Tabelle holen
b) Die Tabelle abziehen.
c) Sync-Lauf starten - ggf sind neue Sync-Datensätze da....

- Bei zukünftigen Queries kann er dann die Replizierungs-Tabelle nutzen. Da er den Stand hat, bis zu dem er alle Änderungen mit bekommen hat, kann er ab da alles ziehen. Dabei ist wichtig, dass er prüft, ob sein letzter gelesener Datensatz noch da ist! Hintergrund ist: Die Replizierungsdaten werden nur gewisse Zeit aufbewahrt. Wenn der client zu lange nicht repliziert hat, dann kann er nicht mehr replizieren! Also Beispiel AD: Schalte einen Domaincontroller gewisse Zeit aus und dann nimmst Du ihn in Betrieb: Hoch kritisch ... Wie gut Microsoft das heutzutage abfängt, weiss ich nicht, aber genau so haben Firmen schon Ihre Windows Domain schön zerfetzt :)

Das ist aber auch nur ein Ansatz, wo es einen Server gibt, an dem mehrere Clients synchronisieren können...
Aber @Thallius hat sehr schön bemerkt: Das kann ein hoch komplexes Thema sein / werden, besonders wenn es um die Beseitigung von Konflikten geht.
 

mrBrown

Super-Moderator
Mitarbeiter
Event Sourcing könnte da ein passendes Stichwort sein und kann ziemlich gut geeignet sein, wenn Domäne und Usecase das hergeben.

Statt den geänderten Datensatz speichert man immer nur ein „Änderungs-Event“. Also, wenn sich der Name ändert, wird nicht der Datensatz mit geändertem Namen gespeichert, sondern nur ein „Name wurde geändert auf XY“.
Den aktuellem Zustand bekommt man dann, wenn man alle Events anwendet *.

Updaten der Clients ist dann wie schon gesagt ein abfragen aller Events seit Zeitpunkt X (oder auch alle Events nach Event X). Updaten des Servers ist hochladen aller Lokal passierten Events.

Konflikte können natürlich immer auftreten — die sind aber weniger ein technisches (oder technisch lösbares) Problem, sondern vielmehr eins in der Domäne, das Ganze tritt auch völlig analog auf.


* Aus Performance-Gründen optimiert man das, für das Prinzip ist das aber irrelevant.
 

lam_tr

Top Contributor
Vielen Dank für die zahlreichen Lösungen, ich werde mal Schritt für Schritt vorgehen.

Eine Frage hätte ich da noch.

Wenn ich zum Beispiel das Datenmodell auf dem Server (Spring Boot App) habe und der Client basierend auf JavaFX auch Spring Boot, benutzt auch das Datenmodell, bevor ich das Model eins zu eins in mein Client Projekt kopiere, gibt es an der Stelle irgendwie eine Möglichkeit es rauszuziehen, damit der Server und Client damit arbeiten kann. Sowas wie ein shared project.

Viele Grüße
lam
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
Avalon Wie sieht bei Euch das Deployment einer Spring Boot Anwendung aus? Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Threads in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 7
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Boot: Was bewirkt parent in maven genau? Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Vaadin+Spring Boot erster Seitenload nach Neustart endlos Frameworks - Spring, Play, Blade, Vaadin & Co 0
doncarlito87 Wie erhalte ich ein JSON aus eine NativeQuery (Spring Boot)? Frameworks - Spring, Play, Blade, Vaadin & Co 8
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon Erstellung Dockerimage mit spring-boot:build-image in Spring Boot mit Umgebungsvariablen Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Boot Field Injection in MapStruct Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot seltsame Logeinträge: Manipulationsversuche? Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Boot Mile Stone und Snapshot Versionen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Exception Body Frameworks - Spring, Play, Blade, Vaadin & Co 2
N Spring Boot - Overkill für private Projekte? Frameworks - Spring, Play, Blade, Vaadin & Co 3
K Migration eines internen Frameworks zu Spring:Boot Frameworks - Spring, Play, Blade, Vaadin & Co 0
Z Hibernate & Postgres in Spring Boot (Syntaxprobleme) Frameworks - Spring, Play, Blade, Vaadin & Co 2
Z Spring Boot mit JPA;, Hibernate, Rest & Lombok Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Spring Security/Boot/Vaadin Cookie Problem bei iFrame Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring Boot: Feld ignorieren Frameworks - Spring, Play, Blade, Vaadin & Co 3
N Buch zum Spring Framework bzw. Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Jasypt Spring Boot HIbernate wie komme ich an den Key? Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Spring Boot im Docker Container - Logback wird nicht verwendet Frameworks - Spring, Play, Blade, Vaadin & Co 13
sascha-sphw Spring Boot Resource Server (OAuth2) @MockMvc Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot CDN Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Deserialiserung mit JSON Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot POST zu PHP API Frameworks - Spring, Play, Blade, Vaadin & Co 12
OnDemand Spring Boot WebClient ErrorHandling Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring boot : Unique Constraint mit Many to Many Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Repository null Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Limits API calls Frameworks - Spring, Play, Blade, Vaadin & Co 20
J Spring boot mit Keyclaok rollen basiert Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Scheduler flexibel machen Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring Boot + Vaadin API Security Frameworks - Spring, Play, Blade, Vaadin & Co 1
S Spring Boot und seine Module verstehen Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Architektur für Spring Boot Projekt Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Boot, Versionskontrolle und Entwicklungsumgebung und Deployment Frameworks - Spring, Play, Blade, Vaadin & Co 2
Avalon Image aus JSON Objekt im Browser anzeigen (BLOB, extrahieren, konvertieren) Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon CSS Datei wird in Spring Boot mit Thymeleaf im Standardordner nicht gefunden Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Spring Boot Mapping null bei GET Aufruf Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Spring Boot Test mit Junit Frameworks - Spring, Play, Blade, Vaadin & Co 8
J Spring Boot - Reactor Frameworks - Spring, Play, Blade, Vaadin & Co 1
TonioTec Spring Boot Datenbankabfrage Frameworks - Spring, Play, Blade, Vaadin & Co 7
OnDemand Spring Boot encoding Slash in URL Parameter Frameworks - Spring, Play, Blade, Vaadin & Co 7
S Spring Boot startet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot -> War File | 404 in Tomcat Frameworks - Spring, Play, Blade, Vaadin & Co 20
LimDul Spring Boot Anwendung "automatisch" neustarten Frameworks - Spring, Play, Blade, Vaadin & Co 3
A Spring boot Frameworks - Spring, Play, Blade, Vaadin & Co 18
bueseb84 Unit Test mit Spring Boot - Service Autowired Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand DTO <> Entity Hibernate Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 28
OnDemand Verständnisfrage DTO Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 19
OnDemand Spring Boot Load Balancing Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Threads Frameworks - Spring, Play, Blade, Vaadin & Co 6
S Spring Boot: Wert aus Config Datei ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot: Ein geschütztes Verzeichnis Frameworks - Spring, Play, Blade, Vaadin & Co 1
bueseb84 Probleme mit Spring Boot Docker und Bootstrap Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot Eureka/Zuul Frameworks - Spring, Play, Blade, Vaadin & Co 0
F Redirect in einer Spring Boot WebApplication Frameworks - Spring, Play, Blade, Vaadin & Co 7
B Erstes Spring Boot Projekt: Gameserver-Manager Frameworks - Spring, Play, Blade, Vaadin & Co 5
V Spring Boot, thymeleaf, Eingaben cashen oder per session speichern? Frameworks - Spring, Play, Blade, Vaadin & Co 2
S Spring Boot Security Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot i18n Frameworks - Spring, Play, Blade, Vaadin & Co 28
bueseb84 Spring Boot : Update H2 Repository Frameworks - Spring, Play, Blade, Vaadin & Co 14
A Spring Boot/ OneToMany Relation Frameworks - Spring, Play, Blade, Vaadin & Co 29
S Spring Boot testen mit Service Klassen Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Controller Spring Boot mit Java Frameworks - Spring, Play, Blade, Vaadin & Co 20
J Spring Boot H2 Datbase Frameworks - Spring, Play, Blade, Vaadin & Co 2
J Spring Boot Thymleaf mit Java.Optional Frameworks - Spring, Play, Blade, Vaadin & Co 0
L JavaFX Anwendung mit Spring Boot und mehrere FXML Forms Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Mit Maven (und Spring-boot) ein FatJAR und ein EAR bauen Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Spring Boot Basic Authentication langsam Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Start Stop Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
H Spring Boot - Dependency Injection Frameworks - Spring, Play, Blade, Vaadin & Co 26
B Java Spring Boot - POM-Problem Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Spring Boot parallele Requests Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Resttemplate exchange XML Frameworks - Spring, Play, Blade, Vaadin & Co 6
S Root-Pfad zu meiner Spring Boot Application Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Spring Boot Error Logging Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot Transactions Frameworks - Spring, Play, Blade, Vaadin & Co 10

Ähnliche Java Themen

Neue Themen


Oben