Spring - erste Schritte...

temi

Top Contributor
Ich beschäftige mich gerade etwas mit Spring und bin jetzt erst mal einigermaßen verwirrt, ob der vielen Möglichkeiten. Andererseits habe ich auch das unbestimmte Gefühl, dass manche der Möglichkeiten guten Programmierpraktiken entgegen stehen. So sollen z. B. für die DI ein öffentlicher, parameterloser Konstruktor sowie Getter/Setter bereitgestellt werden. Für simple Datenobjekte in Ordnung, aber DI soll ja auch in der Geschäftslogik zum Einsatz kommen. Oder Repositories, die direkten DB-Zugriff ermöglichen, was ja eigentlich ebenfalls in die Geschäftslogik sollte.

Da es Spring allerdings schon eine Weile gibt, gibt es natürlich viele, auch bereits ältere Beiträge, so dass ich nicht weiß, ob das alles noch aktuell ist, bzw. soll im Beispiel auch eine tolle Gästebuch-App mit möglichst wenig Zeilen Code herauskommen.

Irgendwie habe ich noch nicht verstanden, wie die vielen vielen Komponenten des Frameworks zusammenhängen, wie Spring Boot da hineinspielt und wann es überhaupt sinnvoll ist Spring einzusetzen. Spring Boot ist ja offenbar das "neue" fancy convention-over-configuration Ding, das alles einfacher macht.

Anscheinend ist es möglich auch nur Teile davon zu verwenden, z. B. eine einfache Konsolenanwendung zu schreiben und nur Spring-Data zu verwenden.

Oder habe ich das falsch verstanden, bzw. ist das sinnvoll?

Wann ist es sinnvoll Spring (Boot) zu verwenden?

Mal als Beispielprojekt etwas in der Art von git. Es gibt eine Serveranwendung mit der Geschäftslogik und eine Clientanwendung auf Konsolenbasis, mit der man Dateien ein- und auschecken kann. Weiterhin soll es noch ein Webfrontend geben, mit dem man über den Browser Dateien ein- und auschecken kann. Könnte man alles "von Hand" machen oder mit Spring?

Sorry für die vielleicht dummen Fragen, aber als Hobbyprogrammierer seit Ihr meine einzigen Ansprechpartner ;)
 
K

kneitzel

Gast
Also zu dem "Wann ist es sinnvoll" wäre meine Antwort so wie bei jedem Framework:
- Wie tief greift das Framework in Deine Applikation ein? Je tiefer etwas eingreift, desto kritischer ist es.
- Was nutzt Du von dem Framework, was für Alternativen gibt es? (Bei Dir wäre die Frage: Was genau nutzt Du? Reichen evtl. die Libraries, auf die Spring zugreift?) -> ggf. ist es zwingend, eine Library einzusetzen. Gewisse sicherheitsrelevante Dinge werde ich nicht selbst schreiben!
- Wie komplex ist das, was Du nutzen willst?

Konkrete Beispiele: Ich musste eine Grafik rendern. Also ich habe ein Bild in Größe x, y Pixel und ich musste es in einen Bereich packen, der die Größe xneu, yneu haben muss. Da hatte ich einige tolle Libs gefunden, die sonst was alles konnten. Aber ich brauchte nur einen minimalen Bruchteil der auch nicht wirklich komplex war. Also habe ich auf die Libs verzeichtet und habe da eine kleine Klasse selbst geschrieben um eben die Komplexität gering zu halten.

Spring Boot habe ich auch schon in Kommandozeilen-Tools verwendet. Das funktioniert super. War damals einfach, um DI zu nutzen und Spring Boot kannte ich so dass ich das benutzt habe. Aber ich habe es dann wieder raus geschmissen. Es war einfach massiver Overhead für eine Funktionalität, die es nicht rechtfertigt. Aber ja: Es funktionierte super!

Also wann ist es sinnvoll, Spring Boot zu nutzen?
Aus meiner Sicht, wenn du die Funktionalität wirklich brauchst und es nicht nur einen zu großen Overhead mitbringt.

Prinzipiell kann DI ja deutlich mehr. Spring Boot Framework kann auch Konstruktoren bedienen, die Parameter benötigen. Das ist also keine zwingende Vorgabe: https://www.baeldung.com/constructor-injection-in-spring

Da erkennst Du also auch direkt eine Problematik, die man sehen muss: Mit jeder Abhängigkeit bringst Du eine gewisse Komplexität mit rein und die musst Du beherrschen. Und das kann auch kritisch für die Sicherheit sein. Das will ja aktualisiert werden so da entsprechende Funktionalitäten mit betroffen sind (Spring Boot hat ja spring Security und so. Wenn Teile von außen angesprochen werden können, dann ist das eh kritisch!). Da kann so ein Framework gesetzt sein (Sicherheitsrelevante Dinge schreibe ich nicht selbst! Da kommen Komponenten, denen ich vertraue). Aber diese muss ich beherrschen und sicher sein, dass ich diese richtig einsetze!

Das wäre so meine Sichtweise darauf. Vielleicht hilft es ja ein bisschen.
 

temi

Top Contributor
Vielleicht noch eine kurze Frage vorher: Was macht Spring Boot eigentlich?

Das Spring-Framework gab es ja bereits vor Spring Boot und konnte auch so genutzt werden. Ist Spring Boot also nur eine Art "Aufsatz" darüber?

Dann erst mal vielen Dank für deine Ausführungen. So in dieser Art hatte ich es mir auch schon gedacht. Es ist einfach eine Abwägung von pro und contra mit darauf folgender Entscheidung, die man treffen muss.

Bezüglich des Beispiels und des Einsatzes von Spring:
Für die Webapplication würde Spring ja durchaus einiges an Erleichterung mitbringen. Ich hab da ein kurzes Tutorial mit Spring Boot und Vaadin ausprobiert, das ging ganz fix.

Gleiches gilt auch für den eigentlichen Server, der dann einem Microservice entsprechen würde.
 
K

kneitzel

Gast
Spring Boot ist ein Aufsatz auf dem Spring Framework um in erster Linie:
- die Konfiguration zu vereinfachen (Es gibt viele default Einstellungen, die schon direkt sinn machen. Änderungen können einfach gegeben werden.)
- Integration eines Servers - Es muss also nicht mehr in einen Application Server deployed werden.
- Starter Dependencies um ein Projekt einfacher aufbauen zu können

Aber da kann man auch viel im Netz zu finden, z.B. https://www.baeldung.com/spring-vs-spring-boot
 

LimDul

Top Contributor
Ich beschäftige mich gerade etwas mit Spring und bin jetzt erst mal einigermaßen verwirrt, ob der vielen Möglichkeiten. Andererseits habe ich auch das unbestimmte Gefühl, dass manche der Möglichkeiten guten Programmierpraktiken entgegen stehen. So sollen z. B. für die DI ein öffentlicher, parameterloser Konstruktor sowie Getter/Setter bereitgestellt werden. Für simple Datenobjekte in Ordnung, aber DI soll ja auch in der Geschäftslogik zum Einsatz kommen. Oder Repositories, die direkten DB-Zugriff ermöglichen, was ja eigentlich ebenfalls in die Geschäftslogik sollte.
Ein Parameterloser Konstruktor ist (Gott Sei Dank) nicht mehr nötig. Einfach die Autowired Annotation an den Konstruktor mit Parametern packen, fertig. Ist auch die deutlich bessere Variante, weil es Tests unglaublich erleichert.

Ich persönlich hab bei meiner Spiel-Spring Boot Anwendungen die Repositories noch verschalt mit einem Service. Also das XYRepository Interface von Spring und dann einen XYService, der das Repository nutzt, aber die fachlichen Methoden zur Verfügung stellt.
 

temi

Top Contributor
Ich persönlich hab bei meiner Spiel-Spring Boot Anwendungen die Repositories noch verschalt mit einem Service. Also das XYRepository Interface von Spring und dann einen XYService, der das Repository nutzt, aber die fachlichen Methoden zur Verfügung stellt.
Da habe ich auch schon drüber nachgedacht, das klingt nach einer vernünftigen Lösung.
 

Oneixee5

Top Contributor
Mal als Beispielprojekt etwas in der Art von git. Es gibt eine Serveranwendung mit der Geschäftslogik und eine Clientanwendung auf Konsolenbasis, mit der man Dateien ein- und auschecken kann. Weiterhin soll es noch ein Webfrontend geben, mit dem man über den Browser Dateien ein- und auschecken kann. Könnte man alles "von Hand" machen oder mit Spring?
Zum Ein- und Auschecken von Dateien gibt es GIT, WebDAV, etc., das würde ich jetzt gar nicht selbst programmieren. Das bekommt man nicht so gut und sicher hin, wie es z.B. bewährte Open Source Lösungen können.
Spring und andere Frameworks oder Bibliotheken setzt man ein, um mit komplexen Anwendung fertig zu werden. Im Job programmiert man ja nicht, um einfach zu programmieren. Man will so schnell und so gut wie möglich fertig werden um einen Wert zu generieren und dann mit dem nächsten Projekt fertig zu werden usw. Man kann mit Frameworks mit kleinem Aufwand die Arbeitsleistung und das Know-how vieler Entwickler in das eigene Projekt integrieren. Dabei spielt es auch keine Rolle ob 3 oder 9 Funktionen einer Bibliothek nicht benutzt werden, das sind dann eben ein paar KB Speicherplatz, heute kostet das fast nichts mehr. Die zunehmende Komplexität ist meist kein Problem. Es ist oft einfacher effizienter und billiger Teile einer Anwendung mit modernen Techniken neu zu schreiben, als ewig an einer selbst geschrieben Anwendung herum zu laborieren. Dadurch verschwinden auch immer wieder veraltete Frameworks und Bibliotheken aus der Pipeline.
 
K

kneitzel

Gast
Also wenn man ein Spiel Projekt hat, dann ist es egal, was das Thema ist. Hauptsache man kann an der Technik rumspielen um diese zu begreifen.

Und ich sehe sehr wohl ein großes Problem darin, Komplexitäten ins Boot zu nehmen, die man eben nicht überblickt. Und so Frameworks wie Spring Boot sind enorme Kracher. Das zu nutzen in einer Software, die man verantworten muss, bedeutet, dass man das Framework auch gut überblickt.

Ein Beispiel, was mir hier in den Sinn kommt: Xerox "Scannergate". Man verwende eine super Image-Kompression. Echt geil, wenn dann Scans verfälscht sind.
 

temi

Top Contributor
Spring und andere Frameworks oder Bibliotheken setzt man ein, um mit komplexen Anwendung fertig zu werden.
Ich denke, es geht einfach darum ein gesundes Maß zu finden. Man muss nicht auf jedes kleine Problem immer mit dem größten Framework losgehen, sondern sich eine Lösung suchen, welche die Anforderungen gut abdeckt.
 
K

kneitzel

Gast
Hmm, beim kopieren der URL von YouTube scheint etwas nicht geklappt zu haben.

Link zu media.ccc.de:

Und auch bei weiteren Link-Versuchen bekomme ich das Video hier nicht richtig verlinkt:
Die URL wäre: https://youtu.be/7FeqF1-Z1g0
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
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
8u3631984 Spring JPA Probleme beim SPeichern von Sets Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring JDBC Probleme beim Spaltennamen Frameworks - Spring, Play, Blade, Vaadin & Co 3
LimDul Spring-Batches in Docker über Rest starten/verfolgen Frameworks - Spring, Play, Blade, Vaadin & Co 0
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
R Eure Erfahrungen mit Primefaces und Spring - wer managed die Beans 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
L Spring Data und Rest Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Data und Rest Conroller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Amazon-SP-Api Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Aktualisiere Spring Controller Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Spring Data: Modellierung mit einer Embeddable bean Frameworks - Spring, Play, Blade, Vaadin & Co 2
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
M Wann Spring Batch nutzen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
P Spring Hessian Remote Beispiel Frameworks - Spring, Play, Blade, Vaadin & Co 20
8u3631984 Spring 2.7.8 Info Enpoint nicht zuerreichen 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
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Spring UsernameNotFoundException(msg); auf der View msg ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Spring UsernameNotFoundException(Message) auf der View Message ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Security: Wie kommt 'UserDetails' an Username und Passwort ran? Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8
R Spring Security: Authentication & Permissions Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Cross-Origin beim Abrufen von Spring Endpoint 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
T Spring Resourcen Ordner ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring JPA und Repository Frameworks - Spring, Play, Blade, Vaadin & Co 12
D Mapstruct Dependency Injection funktioniert nicht mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 15
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
T Spring Security: Run-as replacement Einsatzbereich? Frameworks - Spring, Play, Blade, Vaadin & Co 1
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
N Spring Integration - Logging Frameworks - Spring, Play, Blade, Vaadin & Co 7
D Spring Boot Field Injection in MapStruct Frameworks - Spring, Play, Blade, Vaadin & Co 5
D Spring Anfänger benötigt Hilfe Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot seltsame Logeinträge: Manipulationsversuche? Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Date keine neue Tabelle fuer Attribut Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Spring Security Config File anpassen Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Spring Cloud : Resttemplate mit Loadballancer Frameworks - Spring, Play, Blade, Vaadin & Co 11
Dimax Spring resource not found Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Spring MongoDB unique index Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 5
Dimax Spring App Probleme beim Ausführen auf dem Tomcat Server Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring WebFlux Cors konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Schöne View mit anchor scrolling in Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
Dimax Spring JPA Multiple Keys Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Security mit oauth2 in lokaler Konfiguration principal mocken Frameworks - Spring, Play, Blade, Vaadin & Co 0
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
D Was ist das Framework "Spring"? Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Unit/Integrations Testing Frameworks - Spring, Play, Blade, Vaadin & Co 3
D Spring Unit Test: UnsatisfiedDependencyException: Error creating bean with name Frameworks - Spring, Play, Blade, Vaadin & Co 2
H Resource Liste Lazy Autowired Spring Context Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Java Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Security Login with Credentials Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Boot - Overkill für private Projekte? Frameworks - Spring, Play, Blade, Vaadin & Co 3
krgewb Spring und GWT - & wird zu & amp; Frameworks - Spring, Play, Blade, Vaadin & Co 2
K Migration eines internen Frameworks zu Spring:Boot Frameworks - Spring, Play, Blade, Vaadin & Co 0
OnDemand JPA/Spring Repository Like Suche leeres Ergebnis 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
M Spring Initializer - Webservices Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Hateoas Frameworks - Spring, Play, Blade, Vaadin & Co 1
ma095 Spring und Postgresql Errors Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring+Vaadin App startet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Request externe API SSL Error Frameworks - Spring, Play, Blade, Vaadin & Co 7
OnDemand Spring Repo speichert, aber es kommt in der DB nicht an Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Im Spring ,Mysql-Funktion aufrufen Frameworks - Spring, Play, Blade, Vaadin & Co 2
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
8u3631984 Spring + Thymleaf : Checkbox Object mappen Frameworks - Spring, Play, Blade, Vaadin & Co 0
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 - Authentication object was not found Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Welches Spring Frontend Framework verwendet ihr und wie bzw wo ? Frameworks - Spring, Play, Blade, Vaadin & Co 7
8u3631984 Spring security - 403 bei Role Access Regel Frameworks - Spring, Play, Blade, Vaadin & Co 6

Ähnliche Java Themen

Neue Themen


Oben