SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
SPRING BOOT
Wird Spring jetzt wirklich einfach?
Jens Presser
INHALTE
1. Hintergrund
2. Was ist Spring Boot?
3. Wie funktioniert es?
4. Demo
HINTERGRUND
Herausforderungen
Dependencies
Versionen
Spring Komponenten
Spring Klassen
hohe Lernkurve
"selbstgemachte" Spring-Konfigurationen
yeah, sure, you just connect your TransactionAwareConnectionFactoryProxy
to your UserCredentialsConnectionFactoryAdapter to your ..
Folgen
Boilerplate
Google/Stackoverflow Driven Development
Copy&Paste aus anderen Projekten
WAS IST SPRING BOOT?
Spring Boot Mission Statement
Spring Boot makes it easy to create stand-
alone, production-grade Spring based
Applications that you can "just run". We take
an opinionated view of the Spring platform
and third-party libraries so you can get
started with minimum fuss. Most Spring Boot
applications need very little Spring
configuration.
Ziele
Vereinfachung von Spring Projekten
Out-of-the-box Verhalten
Nichtfunktionale Features
bspw. Embedded Servers, Healthchecks, Metrics, Externalized Configuration
Optimierungen in Richtung:
Microservices
Cloud-basierte Applikationen
12 factor applications
Exkurs: 12 factor applications
one codebase, many deploys
explicit dependencies
configuration in environment
backing services as attached resources
separate build, release and run stages
stateless process
export service via port binding
scale out as processes
robustness with fast startup times, graceful shutdown
keep dev and prod as similar as possible
logs as event streams (stdout)
admin/management tasks as one-off processes
Features
Dependency Management Maven/Gradle
AutoConfiguration
Convention over Configuration
Externalisierte Konfiguration
Profile
Ausführbare Artefakte
Keine Bytecode Manipulation oder Codegenerierung
WIE FUNKTIONIERT ES?
Spring Initializr
Generator für Spring Boot Projekte
Selektion von Spring Boot Komponenten
Parametriert durch:
Artefakt-Koordinaten (group, artifact)
Packaging
Java/Spring Boot Version
Sprache (Java/Groovy)
http://start.spring.io/
Spring Boot Starters
"POM" Projekte für definierte Sets von Dependencies
Depencency Management
Zugriff auf:
Spring Portfolio Module
z.B. Web, Security, Data
3rd Party
z.B. Activiti, Stormpath
Eigene Starters
Spring Boot Plugins
Plugins für Build-Tools Maven und Gradle
Dependecy (Version) Management
Self-executable JARs
enhalten abhängige JARs
eigener Classloader und Main Klasse
Ausführbarkeit aus dem Build-Tool:
Spring Booting...
... that's all!
AutoConfiguration
Vorgefertigte Spring @Configurations
Condition und @Conditional
@ConditionalOnClass
@ConditionalOnMissingBean
@ConditionalOnWebApplication
Externalized Configuration
Spring Boot Defaults
PropertySources in @Configuration
application.properties in JAR / extern
application-{profile}.properties in JAR / extern
Umgebungsvariablen
System-Properties
SPRING_APPLICATION_JSON Umgebungsvariable
CLI Argumente
YAML Format für Konfigurationsdateien (application.yml)
Property Placeholder
profilspezifische Konfigurationsdateien
application.properties
application-default.properties
application-[profile].properties
Typsicherheit, Casting, Namespacing via
@ConfigurationProperties
@ConfigurationProperties
Logging
Vordefinierte Defaults
Formate, Loglevel, Appender etc. konfiguriert
Default: Nur CONSOLE Ausgabe
ERROR, WARN, INFO
Keine Log-Konfigurationsdatei nötig
Log-Konfiguration
Logdatei kann aktiviert werden
Debug über Flag aktivierbar
Log-Level
Log Pattern
DevTools
Default-Properties für Development
z.B. spring.thymeleaf.cache=false
Automatic Restart
LiveReload Browser Support
Remote Debug Tunneling (via HTTP[S])
Remote Update and Restart
Actuators
production ready features
HealthChecks
z.B. Connections zu DB, MQ oder Diskspace
Metrics und Metric Export
z.B. Uptime, Requests, Memory, Pools, Cache, GC, Heap
Weitere Endpoints:
info, env, dump, shutdown
JMX (over HTTP)
Remote Shell
Auditing
PID und Port Dateien
Caveat
Konventionen
AutoConfiguration
Umgebungsvariablen
Default: Single Connection
Framework für ein Framework
DEMO TIME
Fazit
IMHO
Schnelles Aufsetzen
Sinnige Defaults
80:20 Regel
Prototyping?
Kenntnis der Konventionen/Automatismen
VIELEN DANK FÜR EURE AUFMERKSAMKEIT!
Fragen oder Anmerkungen?
Referenzen
Spring Boot Reference
spring-boot@github
Simplifying Spring for Everyone
Under the Boot
How not to hate Spring in 2016
Why I hate Spring

Weitere ähnliche Inhalte

Ähnlich wie Spring Boot - Wird Spring jetzt wirklich einfach?

Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEE
guestc44b7b
 

Ähnlich wie Spring Boot - Wird Spring jetzt wirklich einfach? (20)

Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEE
 
Automatisierung mit grunt
Automatisierung mit gruntAutomatisierung mit grunt
Automatisierung mit grunt
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
Enterprise UI
Enterprise UIEnterprise UI
Enterprise UI
 
BASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
BASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOpsBASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
BASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
 
20110119 activiti jughh
20110119 activiti jughh20110119 activiti jughh
20110119 activiti jughh
 
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
Continuous Integration mit Hudson (JUG Mannheim, 27.01.2010)
 
Enterprise Java Batch mit Spring
Enterprise Java Batch mit SpringEnterprise Java Batch mit Spring
Enterprise Java Batch mit Spring
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
Java EE Microservices ohne Server
Java EE Microservices ohne ServerJava EE Microservices ohne Server
Java EE Microservices ohne Server
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
Continuous Integration mit Hudson (JUG Stuttgart, 11.02.2010)
 
Abläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisierenAbläufe mit PHP und Phing automatisieren
Abläufe mit PHP und Phing automatisieren
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
 
Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework? Warum empfehle ich meinen Kunden das Spring Framework?
Warum empfehle ich meinen Kunden das Spring Framework?
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
 
DWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
DWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOpsDWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
DWX 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite Applications
 

Spring Boot - Wird Spring jetzt wirklich einfach?