Über Spring Boot
Das Java-basierte Spring Boot ist ein Open-Source-Web-Framework, das für die Erstellung von Microservices und eigenständigen Anwendungen verwendet wird. Spring Boot verkürzt die Länge eines Codes und sorgt dafür, dass die Spring-Anwendung einfach ausgeführt werden kann, während das Spring-Framework durch Dependency Injection Flexibilität und Infrastrukturunterstützung bietet.
Spring Boot konfiguriert die Spring-Anwendung automatisch, bietet qualitatives Standalone ohne App-Deployment mit Webservern und ist auch opinionated, also eigenwillig in Bezug auf die Bestimmung, welche Pakete und Standardeinstellungen für Abhängigkeiten installiert werden müssen.
Spring Boot Entwickler-Statistiken
Gegenwärtig besteht eine hohe Nachfrage nach Spring Boot in der Unternehmenswelt aufgrund der hervorragenden, hohen Skalierbarkeit und Verfügbarkeit.
Bis jetzt wurden mehr als 37.000 Commits erfolgreich auf GitHub hochgeladen. Zur Verdeutlichung: Ein Commit ist ein Schnappschuss eines Repositorys (zentraler Speicherort von Daten), der alle aktuellen Quellcodeänderungen direkt im Repository anzeigt.
Interview mit einem Spring Boot-Entwickler
Hilfreiche Tipps für ein Vorstellungsgespräch
Bevor ein Spring Boot-Entwickler eingestellt wird, müssen die Experten, die das Gespräch führen, immer einige kurze Fragen vorbereiten, um herauszufinden, ob der Bewerber alle Kriterien erfüllt, die in einem Unternehmen benötigt werden. Zuerst werden die grundlegenden Fragen gestellt, und in der nächsten Phase folgen die technischen und praktischen Fragen.
Unsere Expertin für Talentakquise, Maria Kyryliuk, betonte:
"Entwickler, die leidenschaftlich über ihre Arbeit sprechen, große Soft Skills, respektvolles Verhalten während des Gesprächs und Sicherstellung der Sichtbarkeit und des Funktionierens der Kamera sowie Aufmerksamkeit für das Gespräch und gute Englischkenntnisse sind alles gute Zeichen. Und natürlich, wenn ich das Gefühl habe, dass es einen guten Gesprächsfluss und gegenseitiges Verständnis gibt, ist dies der letzte Eindruck, der das Gespräch abrundet".
Die wichtigsten technischen Fähigkeiten, nach denen ein Spring Boot-Entwickler gesucht werden sollte
Ein guter Spring Boot-Entwickler sollte mehrere technische Fähigkeiten für die Ausführung und Fertigstellung der zugewiesenen Aufgaben besitzen.
Was die Architektur und das Softwaredesign betrifft, so sollte der perfekte Partner einige Architekturmuster kennen:
- Peer-to-Peer-Muster
- Broker-Muster
- Master-Slave-Muster
- Model-View-Controller-Muster
- Layered-Muster
- Event-Bus-Muster
- Client-Server-Muster
- Blackboard-Muster
- Pipe-Filter-Muster
- Interpreter-Muster
Das nächste ist die OOP oder objektorientierte Programmierung, und ihre grundlegenden Konzepte sind Kapselung, Abstraktion, Vererbung, Polymorphismus, benutzerdefinierte Typen, vordefinierte Typen und Operationen.
Es gibt noch eine weitere entscheidende Fähigkeit, die man unbedingt haben muss, und das ist das Wissen über Microservices und deren Nutzung. Die Java-Entwickler müssen ihre Fähigkeiten und ihr Wissen aktualisieren und dem Trend zum Aufbau von Microservices anstelle von monolithischen Anwendungen folgen. Eine gute Kenntnis von Docker-Containern ist dafür eine notwendige Voraussetzung.
Docker hat sich nicht nur bei der Erstellung, sondern auch bei der Kompilierung von Microservice-Anwendungen als nützlich erwiesen, und das auch in verschiedenen Umgebungen. Im Gegenzug müssen die Entwickler die DURS-Principles gut kennen, die als Microservice-Basis dienen. Es gibt einige Grundprinzipien von DURS: Fehlerisolierung, domänengesteuertes Design, Dezentralisierung, kontinuierliche Bereitstellung und auch DevOps.
Der erfahrene Spring Boot-Entwickler muss auch die richtige Verwendung von Microservice-Architekturbereichen kennen. Diese wichtigen Bereiche sind Autorisierung, Authentifizierung, Netzwerksicherheit, Datensicherheit und Bereitstellung.
Was die Microservice-Muster angeht, so werden die unten aufgeführten von erfahrenen Entwicklern bevorzugt und praktiziert.
- Delivery-Pipelines
- GraphQL-APIs
- Secure by Design
- Docker Rootless-Modus
- HTTPS muss zur Sicherung verwendet werden
- Umgang mit sensiblen Informationen
- Abhängigkeiten müssen gescannt werden
- Vermeiden von Sicherheitsangriffen
- RSocket-Endpunkte
- Zeitbasierte Sicherheit
- Cloud- und Cluster-spezifische bewährte Sicherheitsverfahren
- Zugangs- und Identitäts-Token
- Scannen der Docker- und Kubernetes-Konfiguration
Der Entwickler muss auch die unten aufgeführten Best Practices für Microservices kennen:
- Auf Nutzerbedürfnisse ausgerichtete Microservices
- Praktiken für den Entwurf von Microservices-APIs
- DevSecOps-Ansatz
- Defense in Depth-Muster
- Sitzungen verwalten
- Automatische Sicherheitsupdates
- Zentralisierte Software für Sicherheit und Überwachung
- Aggregieren von Anwendungsprotokollen
- Verteilte Rückverfolgung
DevOps-Werkzeuge
Ein weiteres großes Plus für den Entwickler sind Kenntnisse und Fähigkeiten im Bereich DevOps. Kenntnisse über eines oder mehrere der unten aufgeführten Tools sind ein guter Pluspunkt:
Die Entwickler müssen geeignete Unit-Tests für den jeweiligen Code erstellen und entwickeln. Für Unit-Tests von Java-Code wird immer JUnit verwendet. JUnit hat auch ein übergeordnetes Framework, Xunit. Innerhalb eines Projekts wird die Abdeckung der Unit-Tests durch die Ausführung und Implementierung von Unit-Test-Suites sichergestellt. Die Unit-Tests werden manuell, aber auch mit automatisierten Methoden durchgeführt.
Es gibt einen Grundsatz, der lautet: "Erst testen, dann programmieren", und JUnit basiert genau auf diesem Grundsatz. Einfach ausgedrückt, hilft JUnit dabei, die Effizienz und Qualität der Arbeit von Entwicklern zu verbessern. Die Merkmale dieses Open-Source-Software-Frameworks sind:
- Annotations
- Assertions
- Test Runners
- Automatische Ausführung der Testsuite
- Test-Suiten
- Test-Fortschritt
- Fixtures
Ein typischer Unit-Test enthält einen Testfall zur Überprüfung der Programmfunktionalität oder einer Methode innerhalb der Klasse. Mit Blick auf die Eingabe und das Ergebnis wird der Testfall erstellt, um sowohl die Eingabe als auch das Ergebnis zu prüfen. Die Überprüfung der Eingangsvoraussetzungen ist abgeschlossen.
Auch die Ergebnisprüfungen danach sind abgeschlossen. Für jeden Testfall können Sie einen einzelnen positiven und negativen Test festlegen. Solche Tests können in Tools wie Ant, Maven und Eclipse integriert werden und lassen sich auch in IDEs einbinden.
Was unterscheidet einen hervorragenden Spring Boot-Entwickler von einem guten?
Der perfekte Treffer ist ein großartiger Spring Boot-Entwickler, der ein gutes Verständnis und große Kenntnisse von Java-Webstandards wie Filter und Servlet hat. Ein weiteres Plus ist, wenn der Entwickler Messaging-Queues (ActiveMQ/RabbitMQ/Kafka), Docker, Microservice-Muster und die Funktionsweise eines Cache-Servers (Redis) kennt. Der Entwickler sollte auch in der Lage sein, einen sauberen Code zu schreiben und TDD-Praktiken gut anzuwenden.
Wie Proxify Ihnen hilft, die besten Spring Boot-Talente zu finden
Wenn Sie den Einstellungsprozess und die Suche nach Talenten selbst in die Hand nehmen, könnte der gesamte Prozess für die Suche nach einem Talent ohne Hilfe schwierig werden. Dieser Prozess kann durchweg viel Zeit in Anspruch nehmen, da er mehr umfasst als nur die Veröffentlichung einer Anzeige oder die Planung von Gesprächen mit Kandidaten und Bewerbern.
Der Prozess wird viel Zeit und Ressourcen für das Onboarding und sogar für die Schulung von Bewerbern erfordern, wenn diese geeignet sind, sowie weitere Prozesse auf dem Weg dorthin. Und stellen Sie sich nur einmal die Kosten und Konsequenzen vor, wenn Sie während des Einstellungsverfahrens und der Auswahl den falschen Kandidaten auswählen.
Die Proxify-Spezialisten und -Experten für die Talentakquise können Ihnen ihr Fachwissen durch einen sorgfältigen und zeitsparenden Prozess der Auswahl des richtigen Talents für Sie anbieten, da wir erstklassige Entwickler empfehlen, die beinahe sofort, nämlich innerhalb weniger Tage nach der Auswahl, mit der Arbeit beginnen können.
Unser Verfahren zur Auswahl des richtigen Talents besteht aus folgenden Schritten:
-
Aufgaben zur Selbsteinschätzung, die den Bewerbern, die in die engere Wahl kommen, zugewiesen werden.
-
Ein Vorgespräch, das die Personalverantwortlichen mit Bewerbern führen, die eine erste Aufgabe erfolgreich abgeschlossen haben. In dieser Phase werden vor allem die technischen und nichttechnischen Fähigkeiten, die Beherrschung der englischen Sprache sowie die bisherigen und aktuellen Erfahrungen des Bewerbers geprüft.
-
Der nächste Schritt im Prozess ist eine präzise, technische Aufgabe im Rahmen eines Bewertungstests.
-
Schließlich schließen wir den Prozess mit einem technischen Interview ab, das von einem Spring Boot-Entwickler mit umfassender Erfahrung organisiert und geleitet wird.
Wir geben unser Bestes und sorgen dafür, dass die Zeit, die für die Einstellung eines perfekten Kandidaten benötigt wird, verkürzt wird, im Gegensatz zu den meisten Agenturen oder Personaldienstleistern, bei denen sich der Prozess über einen längeren Zeitraum hinziehen kann. Das liegt vor allem daran, dass das Spring Boot-Framework seit Jahren immer beliebter wird-am deutlichsten bei Proxify, wo die Nachfrage und der Bedarf in den letzten zehn Jahren erheblich gestiegen sind.
Grundlagen und Bewertung eines Spring Boot-Entwicklers
Wir dachten uns, dass unsere eigenen technischen Interviewer und Entwickler am besten die Frage beantworten können, wie man die wesentlichen Faktoren findet, die einen Spring Boot-Entwickler zu einem guten Mitarbeiter machen. Aus diesem Grund haben wir Koray Gecici, Besfort Shehu und Ramazan Sakin interviewt und sie gebeten, uns ihre persönlichen Tipps zu den wesentlichen Faktoren bei der Beurteilung von Seniorität, Erfahrung und technischem Wissen von Spring Boot-Entwicklern zu geben.
Laut dem Software-Ingenieur und Spring Boot-Entwickler Ramazan Sakin sollte ein geeigneter Kandidat wissen, worauf es ankommt:
"Das VCS-Konzept sowie die Nutzung von Git, zusätzlich auch Erfahrungen mit CI/CD und Tools wie Bamboo, Jenkins, GitLab und anderen."
Ramazan Sakin
Darüber hinaus fügt Software-Ingenieur und Spring Boot-Entwickler Besfort Shehu hinzu:
"Die richtige Person sollte sich mit Starter-POMs, Autokonfiguration, Spring Boot CLI sowie Spring Boot Initializer auskennen."
Besfort Shehu
Computeringenieur und Spring Boot-Entwickler Koray Gecici fügte hinzu:
"Bei der Bewertung des Fachwissens liegt der Schwerpunkt auf der Frage, was der Entwickler über Dependency Injection, Bean-Instantiatoin durch einen IOC-Container und IOC im Allgemeinen, die Bedeutung eines Controllers, eines Services, Repository- und von Entity-Paketen, Autokonfiguration, Code Coverage und Branch Coverage sowie die Unterscheidung zwischen Integrationstests und Unit-Tests weiß."
Koray Gecici
Vorteile von Spring Boot
Die Verwendung von Spring Boot bringt zahlreiche Vorteile mit sich und bestätigt die allumfassende Praktikabilität, die den Arbeitsprozess für Ingenieure und Entwickler einfach und funktional macht, und das auch in vielerlei Hinsicht.
Ein Vorteil von Spring Boot ist die Verwendung und das Vertrauen in Java, der ansonsten vielleicht beliebtesten Programmiersprache, die aber auch ein Test-Setup bietet, das standardmäßig für Java-basierte Anwendungen vorgesehen ist.
Ein weiterer wichtiger Vorteil ist die Autokonfiguration, über die sich die Experten einig sind. Das bedeutet, dass die Spring-Anwendung auf einfache Weise und entsprechend den vom Entwickler gewählten JAR-Abhängigkeiten konfiguriert wird.
Welche Vorteile haben die Spring Boot-Entwickler genannt?
Wir haben unsere Entwickler bei Proxify nach ihren Erfahrungen mit Spring Boot gefragt und was sie in diesem Zusammenhang für die nützlichsten und praktischsten Funktionen und Vorteile halten. Wir haben uns auf ihr Fachwissen verlassen und im Folgenden wertvolle Informationen zusammengetragen.
Sakin betonte:
- Keine Notwendigkeit für XML-Konfiguration
- Geringere Menge an Boiler-Plate-Code
- Einbettung von Tomcat, Jetty und Undertow
- Durch eine RAD-Plattform (Rapid Application Development) wird weniger Zeit für die Entwicklung benötigt.
Gecici fügt außerdem hinzu:
- Einfach, praktisch und leicht zu starten sowie einzurichten
- Vereinfachte Verwaltung von Abhängigkeiten
Und auch Shehu führte weiter aus:
- Keine Notwendigkeit für die Bereitstellung von WAR-Dateien
- Reiche und breite Nutzergemeinschaft sowie Zugang zu kostenlosen Lernquellen und materialien
- Erstellung von eigenständigen Anwendungen
Darüber hinaus sind weitere Vorteile von Spring Boot zu nennen:
- Verwaltung des Fernzugriffs/einwandfreie administrative Unterstützung
- Enthaltene Plugins für die Arbeit mit Datenbanken
- Einbetten von HTTP-Server
Mögliche Fragen (+ deren Antworten) für das Vorstellungsgespräch
- Erklären Sie den Unterschied zwischen Spring Boot und Spring.
Erwartete Antwort: Spring ist ein Open-Source-Framework, das Java-Anwendungen unterstützt, während Spring Boot ein Microservice-Framework ist, eine Erweiterung von Spring, die über das Spring-Framework gelegt wird. Man kann daraus schließen, dass Spring mehrere Frameworks (oder "Schichten") enthält, und Spring Boot ist eine davon. Letzteres hat sich jedoch als einfacher zu handhaben erwiesen und macht die sonst erforderlichen Boilerplate-Konfigurationen überflüssig (wenn man eine Spring-Anwendung einrichtet).
- Was ist die Bedeutung von Spring Boot JPA?
Erwartete Antwort: JPA ist eine Abkürzung für Java Persistence API, eine Schnittstelle, die für die relationale Datenverwaltung von Java-Anwendungen verwendet wird. Um mit JPA zu arbeiten, muss man auch ORM (Object Relation Mapping) einbeziehen - diese beiden sind miteinander verbunden, weil ORM es einem ermöglicht, Datenbanktabellen als Ergebnis der Umwandlung von Java-Objekten zu erhalten. Im Allgemeinen eignet sich JPA hervorragend für kleine Prozesse in einer Abfrage und verkürzt den Boilerplate-Code.
- Was sind Spring Boot-"Profile"?
Erwartete Antwort: Wenn Teile einer App-Konfiguration gruppiert sind, nennen wir sie Profile. Die Profile stellen eine Gruppe von Konfigurationseinstellungen dar, und diese Gruppierung hilft einem, eine präzise, genaue Konfiguration in der jeweiligen, geeigneten Umgebung korrekt einzustellen.
- Was können Sie über den "Initializr" sagen?
Erwartete Antwort: Wenn man die Struktur eines Spring Boot-Projekts generieren muss, verwendet man das webbasierte Tool namens Spring Initializr. Dieses Tool hilft Entwicklern bei der Auswahl der besten und geeignetsten Projektkonfiguration und hilft bei der bestmöglichen Nutzung einer erweiterbaren API. Man könnte den Initializer als eine Art Katalysator oder Generator für die Struktur eines Spring-Projekts betrachten.
- Was ist "Thymeleaf"?
Erwartete Antwort: Die serverseitige Engine, eine Java-basierte Bibliothek, die ein Entwickler für die Erstellung von Webanwendungen verwenden würde, heißt Thymeleaf. Diese Bibliothek hilft einem bei der Erstellung und Verarbeitung von Text, CSS, XML, HTML und auch JavaScript. Diese Bibliothek ist nützlich und gut zu gebrauchen, weil sie recht umfangreich ist, die Entwicklungszeit insgesamt verkürzt und kein Backend für die Erstellung von Vorlagen benötigt.
- Was können Sie zur Spring YAML-Konfiguration sagen?
Erwartete Antwort: Zunächst muss man YAML definieren, erklären und anschließend den Zusammenhang zu Spring Boot herstellen. YAML (Yet Another Markup Language) stellt eine gut lesbare, flexible Sprache zur Datenserialisierung dar und kann sogar einen geeigneten Ersatz für einige Sprachen, wie z.B. JSON, darstellen. Ein großer Vorteil von YAML ist, dass man es unglaublich einfach in native Daten abbilden kann. Ein weiterer Vorteil von YAML ist die leichte Lesbarkeit, so dass es sich hervorragend für Konfigurationsarbeiten eignet und eine einfache Automatisierung von Prozessen ermöglicht. Im Zusammenhang mit Spring Boot bietet sich YAML vor allem dann an, wenn man mit Hierarchiekonfigurationen arbeitet und diese übersichtlich spezifizieren muss.
- Was können Sie über die "Hauptklasse" von Spring Boot sagen?
Erwartete Antwort: Die Spring Boot Hauptklasse, die eine Hauptmethode enthält. Diese Klasse ist am häufigsten in Java-Anwendungen zu finden. Im Kontext von Spring Boot treibt die Hauptklasse den SpringApplicationContext an, da die Klasse die Methode public static void main() enthält.
Wenn man mehrere deklarierte Hauptklassen in einer Anwendung hat, kann man mit Spring Boot ganz einfach eine "Hauptklasse" in der Konfiguration festlegen.
- Definieren Sie den IoC-Container und seinen Zusammenhang in Spring Boot.
Erwartete Antwort: Die Injektion von Abhängigkeiten wird unglaublich effektiv und vereinfacht, wenn sie automatisch erfolgt, und diese Art von automatischem Prozess wird mit dem Programmierprinzip IoC-Container durchgeführt. Es gibt keine manuelle Objektverwaltung mehr, wenn man IoC mit Spring Boot verwendet, und alle Objekte mit ihren Abhängigkeiten werden perfekt konfiguriert und zusammengestellt.
- Was sind Spring Boot Entwicklertools?
Erwartete Antwort: Erstens sind Entwicklertools eine Reihe von Tools oder ein Modul, das den Entwicklern beim Testen und Debuggen von Codes hilft und ihre Arbeit insgesamt vereinfacht. Genauer gesagt handelt es sich bei den Spring Boot Entwicklertools um eine von Spring veröffentlichte Erweiterung, die Teil von Spring Boot 1.3. ist.
Diese Spring Boot Entwicklertools bringen große Verbesserungen für die Arbeit mit Spring Boot, wie:
- Der automatische Neustart ermöglicht ein einfaches Neuladen von Java-Klassen, gefolgt von der serverseitigen Konfiguration.
- Fernaktualisierung und -neustart - Damit kann man eine Anwendung aus der Ferne neu starten und aktualisieren, indem man alle Datei-Änderungen in einem Klassenpfad überwacht und sie sofort an einen entfernten Server sendet. Am Ende wird dieser Server neu gestartet.
- Property Defaults, zur einfachen Deaktivierung des Caching und zur einfachen Aktualisierung von Seiten ohne Neustart der Anwendung - alles mit Hilfe und Implementierung von Thymeleaf und seinem 'spring.thymeleaf.cache'.
- Remote-Debug-Tunneling - Das Tunneln von JDWP (Java Debug Wire Protocol) direkt zur Anwendung über HTTP ist jetzt unglaublich einfach.
- LiveReload ist der in den Entwicklertools enthaltene Server, der die App in die Lage versetzt, den Browser automatisch zu aktualisieren. Dieses Aktualisieren des Browsers oder "Auto-Refresh" würde bei allen Änderungen erfolgen, die man unterwegs vornimmt.
Zusammenfassend lässt sich sagen, dass die Spring Boot-Anwendung schnell neu gestartet werden muss, wenn man Codeänderungen vornimmt.
- Was ist @RequestMapping? Und @GetMapping?
Erwartete Antwort: Die Art der Annotation, die uns Informationen für das Routing liefert, heißt @RequestMapping und wird meist auf Methoden- oder Klassenebene innerhalb der Controller-Klasse verwendet. Wenn man also @RequestMapping verwendet, erwartet einen ein Mapping aus einem globalen Anforderungspfad auf der Controllerklasse.
Anders als die oben erwähnte Annotation auf Klassenebene ist @GetMapping die zusammengesetzte Annotation, die Methoden verbindet. Diese Annotation findet alle HTTP-GET-Anfragen und ordnet sie bei Bedarf einfach bestimmten Handler-Methoden zu.