introduksjon til spring boot
DESCRIPTION
Introduksjon til Spring BootTRANSCRIPT
1
Introduksjon til Spring BootHenrik Schwarz – BouvetONE – 11.06.2014
2
Om meg
• Java-utvikler og arkitekt
• For tiden på prosjekt hos Forsvaret
3
Utgangspunkt
• Enterprise-applikasjoner basert på Maven/Spring inneholder ofte mye XML
• Komplisert dependency management• Mye “boiler-plate” konfigurasjon, kan
være vanskelig å vedlikeholde • Utvikling av webapps forutsetter
kjennskap til servlet spec (web.xml etc.)
• Kan ta flere dager bare å sette opp et prosjekt!
4
Micro Services
• Selskaper som Google og Amazon beveger seg bort fra monolittiske arkitekturer
• Trend: Micro Service arkitektur og REST• Dekomponere en applikasjon i løst koblede
tjenester (ofte REST-grensesnitt)• Micro Services er små og gjør en ting • Deployeres som selvstendige prosesser
• Finnes det et godt egnet verktøy som kan understøtte utvikling av Micro Services?
5
Spring IO
6
Spring Boot
• Nytt Spring-prosjekt som skal gjøre det mer effektivt å utvikle Spring-applikasjoner
• Enkelt å lage standalone Spring-apps som kan kjøres uten app-server
• Spring Boot ble lansert 1. april i år• Følger med CLI og god støtte for
Groovy• Gjeldende versjon er 1.1.0
7
Forenklet dependency management<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>
• Sett med Maven starter pom’er• Tar inn anbefalte avhengigheter• Gjør det lett å komme i gangWeb Jetty eller Tomcat + Spring MVC
Data-jpa Hibernate + Spring Data + JSR 303 annotations
Security Spring Security
… …
8
Forenklet konfigurasjon
• @EnableAutoConfiguration• Auto-konfigurasjon basert på
avhengigheter som finnes på classpath• Nødvendige beans blir konfigurert med
“sensible defaults”• Convention over configuration• Implementert for en rekke anbefalte
rammeverk som fungerer godt sammen
• Enkel overriding av defaults• Ikke behov for web.xml
9
Forenklet deployment
• Spring-boot-maven-plugin• Pakker kjørbar JAR-fil• Kjøres med java –jar kommandoen
(embedded Jetty eller Tomcat)• Ingen appserver nødvendig• Mulighet for ekstern konfigurasjon• Ingen utpakking av filer
10
Management endpoints
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>
• /health skal returnere “ok” • /metrics tellere og statistikk• /dump thread dump• /trace logger• /beans oversikt over bønner• /env environment
variabler
11
Tid for demo!
12
Fordeler
• Ingen kodegenerering eller behov for XML
• Minimalt med boilerplate konfigurasjon• Enkelt å override defaults• Gjør det raskt å komme i gang med
Spring• Kjørbar JAR: ikke behov for app-server• Kan også pakke klassisk WAR• Innebygde management endpoints• Lett å lage RESTful web services• Enkel deployment til Cloud (PaaS)
13
Ulemper
• Man må godta litt “magi”• Mister litt kontroll• Auto-konfigurasjon støttes
foreløpig bare av utvalgte rammeverk
14
Konklusjon
• Ser veldig lovende ut!• Perfekt for Micro Services og REST• Skal bli den anbefalte måten å lage
Spring applikasjoner på i fremtiden