Hva er Java Spring Boot?
En introduksjon til Spring Boot – det populære Java-baserte verktøyet for utvikling av nettprogrammer og mikrotjenester

Hva er Spring Boot?
Java Spring Boot er et verktøy med åpen kildekode som gjør det enklere å bruke Java-baserte rammeverk for å opprette mikrotjenester og web-apper. For enhver definisjon av Spring Boot, må samtalen starte med Java – et av de mest populære og mye brukte utviklingsspråkene og dataplattformene for app-utvikling. Utviklere over hele verden starter sin kodereise ved å lære Java. Fordi det er fleksibelt og brukervennlig, er Java en favoritt blant utviklere for en rekke apper – alt fra sosiale medier, web- og spill-apper til nettverk og bedriftsapplikasjoner.
Java og Spring-rammeverket
Selv om Java kan være enkelt å bruke og enklere å lære enn andre språk, har kompleksitetsnivået for å bygge, feilsøke og distribuere Java-programmer eskalert til stadig nye høyder. Dette er grunnet det eksponentielle antallet variabler som moderne utviklere må forholde seg til ved utvikling av nettprogrammer eller mobilapper for vanlige moderne teknologier som strømming av musikk eller apper for mobil kontantbetaling. En utvikler som skriver et grunnleggende forretningsprogram må nå håndtere mange biblioteker, kontrollprogrammer, biblioteker for logging og håndtering av feil, integrasjoner med nettjenester og flere språk som C#, Java, HTML med fler. Forståelig nok er det derfor stor etterspørsel etter verktøy som strømlinjeformer utvikling av Java-programmer, og sparer utviklere for tid og penger.
Det er her programrammeverk kommer inn – de store basene med forhåndsskrevet kode som utviklere kan bruke og legge til i sin egen kode, etter behov. Disse rammeverkene letter belastningen for utvikleren for nesten alle slags behov – enten de utvikler mobile og nettprogrammer, eller jobber med datamaskiner og API-er. Rammeverk gjør det raskere, enklere og sikrere å utvikle programmer ved å levere gjenbrukbare kode og verktøy som bidrar til å knytte sammen de ulike elementene av et programvareutviklingsprosjekt.
Det er her Spring kommer inn: Spring er et prosjekt med åpen kildekode som gir en strømlinjeformet, modulær tilnærming til utvikling av programmer med Java. Familien av Springbaserte prosjekter startet i 2003 som et svar på kompleksiteten ved tidlig Java-utvikling, og gir støtte for utvikling av Java-programmer. Navnet, Spring, alene henviser vanligvis til selve programrammeverket, eller hele gruppen med prosjekter, eller moduler. Spring Boot er én spesifikk modul som er utviklet som en utvidelse av Spring-rammeverket.
Så, med denne bakgrunnen om hvordan Spring-rammeverket, Spring Boot og Java fungerer sammen, her er definisjonen av Spring Boot – verktøyet som strømlinjeformer og setter fart på utvikling av nettprogrammer og mikrotjenester i Java-rammeverket, Spring.
Av og til, fordi språket og/eller plattformen er Java, blir det kalt «Java Spring Boot», «Java Spring-rammeverket» eller «Spring Boot-rammeverket». Fordi det finnes andre tredjepartsrammeverk for java, som Play og Hibernate, er det imidlertid riktigere å si «Spring» og «Spring Boot».
Se artikkelen Hva er Java? for en diskusjon om det grunnleggende i Java på høyt nivå
Hva er forskjellen mellom Spring og Spring Boot?
Som nevnt tidligere, er Spring et Java-basert apprammeverk med åpen kildekode som dekker mange mindre prosjekter under paraplyen. Andre populære Spring-prosjekter inkluderer Spring Data, Spring Cloud og Spring Security, bare for å nevne noen. For å forstå forskjellen mellom Spring Boot og Spring, er det viktig å innse at selv om det kan være forskjeller i kjernefunksjoner, er alt i Spring Family.
For å forstå forskjellene mellom Spring og Spring Boot, må vi definere noen nøkkelvilkår først.


Hva er mikrotjenester?
Mikrotjenester er en tilnærming til arkitektur for programvareutvikling. «Mikro» i mikrotjenester viser til at koden leveres i små, håndterbare deler, eller komponenter, og hver «tjeneste» eller kjernefunksjon opprettes og distribueres uavhengig av de andre tjenestene. De uavhengige komponentene jobber sammen og kommuniserer gjennom krypterte API-dokumenter som kalles kontrakter. Den lille skalaen og relative isolasjonen til disse mikrotjenestene har mange fordeler. Fordi denne typen arkitektur er distribuert og løst sammenkoblet, bryter for eksempel ikke hele programmet sammen dersom én komponent feiler. Andre fordeler er økt produktivitet, enklere vedlikehold, enklere justering til bedriften og større feiltoleranse.
Hva er innsetting av avhengigheter?
Innsetting av avhengigheter (DI) er en designteknikk som brukes for å oppnå innsettingskontroll (IoC). I objektorientert programmering, som Java, kalles objekter som er avhengige av andre objekter for avhengigheter. Vanligvis kalles det mottakende eller avhengige objektet for en klient, og objektet klienten er avhengig av kalles for en tjeneste. Innsetting av avhengigheter vil dermed sende tjenesten til klienten, eller den «setter inn» avhengigheten ved hjelp av kode som kalles en injektor. DI fjerner behovet for at klienten må angi hvilken tjeneste som skal brukes – injektoren gjør denne jobben for klienten.


Hva er konvensjon over konfigurasjon?
Konvensjon over konfigurasjon, som av og til kalles koding etter konvensjoner, er et konsept som brukes i programrammeverk for å redusere antall beslutninger en utvikler må ta. Det følger prinsippet om å «ikke gjenta seg selv» for å unngå skriving av overflødig kode. Koding etter konvensjoner streber etter å beholde fleksibiliteten samtidig som utvikleren bare trenger å skrive kode for de ukonvensjonelle delene av programmet de utvikler. Når den ønskede adferden til programmet samsvarer med de etablerte konvensjonene vil appen kjøre som standard, uten at man trenger å skrive konfigurasjonsfiler. Utvikleren trenger bare å eksplisitt skrive konfigurasjonsfiler dersom den ønskede adferden skiller seg fra «konvensjonen».
Spring-rammeverket vs. Spring Boot
Fordi Spring Boot er bygget på fordelene med Spring-rammeverket, er det egentlig ikke et «enten/eller»-spørsmål om Spring vs. Spring Boot, men snarere en «både/og» fordel. Det er ikke Spring vs Spring Boot; Spring og Spring Boot går hånd i hånd:
Spring | Spring Boot | |
---|---|---|
Hva er det? | Et nettprogramrammeverk med åpen kildekode basert på Java. | En utvidelse, eller modul, bygget på Spring-rammeverket. |
Hva gjør den? | Gir et fleksibelt, fullt konfigurerbart miljø ved hjelp av verktøy og biblioteker med forhåndsbygd kode for å utvikle tilpassede, løst sammenkoblede nettprogrammer. | Gir muligheten til å skape frittstående Spring-programmer som bare kan kjøre umiddelbart uten behov for merknader, XML-konfigurering eller skriving av mye ekstra kode. |
Når bør jeg bruke det? |
Bruk Spring når du ønsker å:
|
Bruk Spring Boot når du ønsker å:
|
Hva er hovedfunksjonen? | Innsetting av avhengighet | Automatisk konfigurasjon |
Har den innebygde servere? | Nei. I Spring må du eksplisitt konfigurere serverne. | Ja, Spring Boot leveres med innebygde HTML-servere som Tomcat og Jetty. |
Hvordan konfigureres det? | Spring-rammeverket gir fleksibilitet, men konfigurasjonen må utvikles manuelt. | Spring Boot konfigurerer Spring og andre tredjepartsrammeverk automatisk med standardprinsippet «konvensjon over konfigurasjon». |
Må jeg vite hvordan jeg jobber med XML? | I Spring kreves kjennskap til XML-konfigurering. | Spring Boot krever ikke XML-konfigurasjon. |
Finnes det CLI-verktøy for utvikling/testing av programmer? | Spring-rammeverket alene tilbyr ikke CLI-verktøy for utvikling eller testing av apper. | Som en Spring-modul har Spring Boot et CLI-verktøy for utvikling og testing av Spring-baserte apper. |
Fungerer det fra en meningsfylt eller ikke-meningsfylt tilnærming? | Ikke-meningsfylt* | Meningsfylt* |
*En meningsfylt vs. en ikke-meningsfylt tilnærming til rammeverk
Selv om ordet «meningsfylt» kan høres lett negativt ut, har både den meningsfylte tilnærmingen i Spring Boot og det ikke-meningsfylte Spring-rammeverket sine fordeler.
Meningsfylt tilnærming
En meningsfylt tilnærming tar utgangspunkt i at det er én måte som er langt enklere enn alle andre. Dermed vil programvaren, helt tiltenkt, begrense designere, og oppfordre dem til å gjøre ting på en forhåndsdefinert måte.
Det gir en kjent bane, en anbefalt fremgangsmåte som vil fungere for de aller fleste og i de fleste situasjoner. Programmet er skrevet slik at det holder seg tett opp til disse anbefalte fremgangsmåtene og ofte brukte konvensjoner. En meningsfylt tilnærming gjør det mye enklere å samarbeide og få hjelp med et kodeprosjekt – andre utviklere som har erfaring med rammeverket vil ha umiddelbar kjennskap til det nye programmet, og kan dykke direkte inn.
Ikke-meninsfylt tilnærming
En ikke-meningsfylt tilnærming tas i bruk hvis alle løsninger krever omtrent samme mengde innsats eller kompleksitet. Det tar utgangspunkt i at det ikke finnes én riktig måte å finne en løsning på et problem på. I stedet gir det fleksible verktøy som kan brukes til å løse problemet på mange ulike måter. Ikke-meningsfylte rammeverk har fordelen av å gi mye fleksibilitet i utviklingen, og de legger mer kontroll i hendene på utvikleren. Den største ulempen med så stor fleksibilitet er at utvikleren må ta flere beslutninger, og kan ende opp med å skrive mer kode fordi rammeverket er så åpent og, vel, ikke-meningsfylt.
Funksjoner og fordeler ved Spring Boot
Til slutt, den spennende delen - kjernemulighetene som Java Spring Boot gir utover Spring-rammeverket. Spring Boot gir en enklere, raskere måte for å sette opp, konfigurere og kjøre apper. Det eliminerer det tunge arbeidet med konfigurasjon som kreves for å sette opp de fleste Spring-baserte apper. Utviklere kan hoppe rett inn og bruke Spring Boot uten å måtte lære det underliggende Spring-rammeverket.

Slik bidrar Spring Boot-funksjonene til å strømlinjeforme programmeringsoppgaver i Java. Noen viktige funksjoner i Spring Boot er:
- Frittstående programmer – Spring Boot bidra til å utvikle programmer som ikke er knyttet til en bestemt plattform, og som kan kjøres lokalt på en enhet uten Internett-tilkobling eller at andre installerte tjenester fungerer.
- Innebygde servere – Spring Boot lar deg bygge inn servere som Tomcat, Jetty eller Undertow direkte.
- Meningsfylt tilnærming – Spring Boot forenkler konfigurasjonaer av bygg ved å levere meningsfylte startavhengigheter.
- Automatisk konfigurasjon – Spring Boot konfigurerer Spring og andre tredjepartsbiblioteker automatisk når det er mulig.
- Produksjonsklare funksjoner – Spring Boot leverer produksjonsklare funksjoner som måledata, tilstandskontroller og eksternisert konfigurasjon.
Fordeler ved Spring Boot
Spring Boot:
- Reduserer utviklingstiden og øker produktiviteten – Spring Boot gjør det mye enklere å utvikle Spring-baserte programmer med Java. Den meningsfylte tilnærmingen til Spring-rammeverket reduserer tid brukt på avgjørelser og repetitive oppgaver, og frigjør tid til å fokusere på å utvikle og teste programmene.
- Reduserer behovet for å skrive standardkode, merknader og XML-konfigurering – Utviklerne trenger ikke å generere kode eller konfigurere XML, og de trenger ikke engang lære seg Spring-rammeverket om de ikke ønsker det.
- Integrerer apper i Spring-prosjektfamilien – Spring Boot-programmer integreres sømløst med andre prosjekter i økosystemet for Spring-rammeverk – som Spring Data, Spring Cloud, Spring Security – samt andre pålitelige skytjenester som Microsoft Azure Spring Cloud.
- Inneholder verktøy for utvikling/testing – Med Spring Boots kommandolinjegrensesnitt (CLI)-verktøy og innebygde HTTP-servere blir det svært enkelt å opprette miljøer for å utvikle/teste Spring-baserte programmer.
- Tilbyr kontrollprogrammer og verkøy som gjør utviklingen enklere – Spring Boot tilbyr kontrollprogrammer for å kunne jobbe med databaser i minnet, samt andre populære verktøy for byggautomasjon, som Apache Maven.
Opplæringer i Java Spring Boot
Hvis du allerede er kjent med å bygge apper ved hjelp av Spring-rammeverket, vil du sannsynligvis finne det enkelt å lære Spring Boot ved hjelp av opplæringsprogrammer, prosjektstartpakker og dokumentasjon som tilbys i denne seksjonen. Men her er en god nyhet hvis du har det travelt med å bruke Spring Boot, men ikke kjenner rammeverket ennå. Det er mulig å lære Spring Boot – og komme i gang med det – før du lærer Spring-rammeverket, fordi du vil plukke opp mange av rammeverkets grunnleggende mens du går. Selv om dette ikke vil lære deg alt som er å vite om rammeverket, vil det gi deg en god start hvis du bestemmer deg for å lære det senere.
En annen fordel ved å lære seg Spring Boot, ut over at programutviklingen blir mye raskere og mer effektiv, er at det også gjør deg i stand til å bruke andre Spring-muligheter, hovedsakelig Spring Data, Project Reactor og Spring Security.

Når det er sagt, vil det være enklere å komme gjennom din først Spring Boot-veiledning hvis du ført lærer deg hvordan de grunnleggende konseptene for avhengighetsinnsetting og kontrollinvertering fungerer i Spring-rammeverket. Her er en oversikt på svært høyt nivå:
Innsetting av avhengighet
- XML-basert, dvs. <beans/> og <namespace:*/>
- Merknadsbasert, dvs. @Component, @Autowired, @Inject
- Java-baserte, dvs. @Configuration-klasser, @Bean-metoder
Invertering av kontroll (IoC)
- ApplicationContext – rotgrensesnittet som fungerer som Spring IoC-beholder
- BeanFactory – grensesnittet for å få tilgang til Spring-beholderen
- Beans – objekter som opprettes, sammensettes og administreres av ApplicationContext.
Opplæring i Java Spring Boot for nybegynnere
Når du har mestret det grunnleggende, kan du vurdere å sjekke ut den fullstendig administrerte tjenesten Azure Spring Cloud fra Microsoft og VMware hvis du vil bygge og distribuere Spring Boot-apper i stor skala. Eller kom i gang umiddelbart med denne opplæringen om hvordan du sikrer spring boot-appene dine med TLS/SSL-sertifikater.
Utvikle og bidra til å sikre et Java-program
Skap et Java-program med Spring Initializr ved hjelp av Spring Boot-starteren for Azure Active Directory (Azure AD).
Distribuer ditt første program til Azure Spring Cloud
Finn ut mer om å skape, klargjøre og overvåke et enkelt Spring Boot-program utviklet med Spring Initializr.
Bygg en enkel Spring Boot-mikrotjeneste
Utvikle og distribuer en enkel mikrotjeneste – og lær deretter å legge til Spring Cloud-teknologier i den.
Flere Spring Boot-startere
Legg til funksjoner for lagring, sikkerhet, godkjenning og nøkkelhvelv i Spring Boot-programmer.
Vanlige spørsmål
-
Spring Boot er et mikrotjenestebasert Java-rammeverk med åpen kildekode som tilbys av Spring, som er spesielt nyttig for programvareutviklere som utvikler nettprogrammer og mikrotjenester.
-
«Spring Boot i Java» er en annen måte å si «Java Spring Boot» på – de to begrepene kan brukes om hverandre. Java er språket og plattformen, Spring er programrammeverket basert på Java, og Spring Boot er en utvidelse av Spring-rammeverket, med noen ekstra fordeler.
-
Spring Boot har funksjonaliteten fra det generelle Spring-rammeverket, men Spring Boot krever ikke at du lærer deg Spring. En utvikler kan få et program i gang på kortere tid fordi Spring Boot-attributter konfigureres automatisk, og den meningsfulle tilnærmingen fjerner mye av standardkoden og konfigurasjonen som kreves ved programutvikling og -distribusjon i Spring.
-
Ja, som nevnt ovenfor, er våroppstart spesielt nyttig for en mikrotjeneste-tilnærming til arkitektur for programvareutvikling. Mikrotjenester er en populær måte å bygge små, frittstående team som kan arbeide uavhengig – og på sin egen måte – fungerer mikrotjenester bare i serverdelen.
-
Redusert utviklingstid, økt produktivitet og brukervennlighet er bare noen av fordelene ved å utvikle Spring Boot-programmer.
-
Det finnes mange opplæringer, hurtigstarter og dokumentasjon på Springs nettsted, samt Spring Boot-startere og dokumentasjon fra Microsoft Azure. Hvis du vil komme i gang med utvikling av Spring Boot-programmer med én gang, kan du se webinaret Sett fart på Spring Boot-programmer til skyen i stor skala.