Hopp over navigasjon

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?

Samtalen må starte med Java for alle definisjoner av Spring Boot – et av de mest populære og mest brukte utviklingsspråkene og databehandlingsplattformene for programutvikling. Utviklere over hele verden begynner sin kodereise med å lære seg Java. Java er fleksibelt og brukervennlig, og er en favoritt blant utviklere for mange ulike programmer – alt fra sosiale medier, nett- og spillprogrammer til nettverks- og forretningsprogrammer.

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 programrammeverk med åpen kildekode, som dekker mange mindre prosjekter. 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 kjernefunksjonene, er de begge i Spring-familien.

For å forstå forskjellene mellom Spring Boot og Spring fullt ut må vi definere noen viktige begreper 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 ved Spring-rammeverket, er det egentlig ikke et spørsmål om «enten/eller» mellom Spring-rammeverket og Spring Boot, men heller en «både/og»-fordel. Spring og Spring Boot går hånd i hånd:

Ikke tilgjengelig 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 å:

  • Fleksibilitet
  • En ikke-meningsfylt tilnærming.*
  • For å fjerne avhengigheter fra tilpasset kode.
  • Slik implementerer du en svært unik konfigurasjon.
  • For å utvikle bedriftsprogrammer.

Bruk Spring Boot når du ønsker å:

  • Brukervennlighet
  • En meningsfylt tilnærming.*
  • For å få i gang programmer av høy kvalitet og redusere utviklingstiden.
  • For å unngå å skrive standardkode eller konfigurere XML.
  • Til å utvikle REST API-er.
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 Spring Boot gir ut over Spring-rammeverket. Spring Boot gir en enklere og raskere måte å sette opp, konfigurere og kjøre programmer på. Den eliminererer den tunge jobben med konfigurering som kreves for å sette opp de fleste Spring-baserte programmer. Utviklere kan dykke rett ned i og bruke Spring Boot uten å måtte lære seg 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 å utvikle programmer med Spring-rammeverket vil du sannsynligvis synes det er enkelt å lære Spring Boot ved hjelp av veiledninger, prosjektstarterne og dokumentasjonen i denne delen. Her er imidlertid noen gode nyheter hvis du har dårlig tid, og vil lære Spring Boot uten å kjenne rammeverket fra før: Det er mulig å lære – og jobbe med – Spring Boot før du lærer deg Spring-rammeverket, fordi du vil lære mange av de grunnleggende punktene i rammeverket mens du jobber. Selv om dette ikke vil lære deg alt du trenger å vite om rammeverket, vil det gi deg en god start om du ønsker å 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æringer for Spring Boot for nybegynnere

Når du mestrer det grunnleggende kan du se den fulladministrerte tjenesten Azure Spring Cloud fra Microsoft og VMware dersom du ønsker å bygge og distribuere Spring Boot-programmer i stor skala.

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.

    Finn ut mer

  • «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.

    Finn ut mer

  • 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.

    Finn ut mer

  • Redusert utviklingstid, økt produktivitet og brukervennlighet er bare noen av fordelene ved å utvikle Spring Boot-programmer.

    Finn ut mer

  • 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.

    Finn ut mer

Klar når du er – la oss konfigurere gratiskontoen din

Kan vi hjelpe deg?