Spring ist ein verbreitetes Framework, hat aber den Ruf sehr komplex zu sein und eine steile Lernkurve zu erfordern. Spring Boot will hier ansetzen und den Einstieg für Spring Projekte massiv vereinfachen.
In dem Vortrag will ich das Spring Boot Framework vorstellen, was es bietet, welche Ziele es anstrebt und welche Ansätze diese erfüllen sollen. Am Ende sollte jeder für sich die Frage im Titel beantworten können.
8. 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.
9. 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
10. 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
15. 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/
16.
17. 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
18. 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:
22. 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
23. YAML Format für Konfigurationsdateien (application.yml)
Property Placeholder
profilspezifische Konfigurationsdateien
application.properties
application-default.properties
application-[profile].properties
Typsicherheit, Casting, Namespacing via
@ConfigurationProperties
28. 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