Hva er Spring Boot?
Java Spring Boot er et verktøy med åpen kildekode som gjør det enklere å bruke Java-baserte rammeverk til å opprette mikrotjenester og webprogrammer. For enhver definisjon av Spring Boot må samtalen starte med Java – et av de mest populære og mest brukte utviklingsspråkene og dataplattformene for utvikling av programmer. Utviklere over hele verden starter kodingsprosessen sin med å lære Java. Java er fleksibel og brukervennlig og er en utviklerfavoritt for en rekke programmer – alt fra sosiale medier, nettapper og spillapper til nettverk og bedriftsprogrammer.
Java- og Spring-rammeverket
Mens 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 skyldes det eksponentielle antallet variabler som moderne utviklere står overfor når de utvikler webprogrammer eller mobilapper for vanlige moderne teknologier, slik som musikkstrømming eller betalingsapper for mobil. En utvikler som skriver en grunnleggende bransjespesifikk app, må nå håndtere flere biblioteker, programtillegg, feillogging og håndtering av biblioteker, integrasjoner med nettjenester og flere språk, slik som C#, Java, HTML og andre. Forståelig nok er det en stor etterspørsel etter alle verktøy som vil effektivisere utviklingen av Java-programmer, noe som sparer utviklerne 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 hvert som behovene dukker opp. Disse rammeverkene letter belastningen for utviklerne for nesten alle behov – enten de utvikler mobil- og webprogrammer eller arbeider med skrivebord og API-er. Rammeverk gjør det raskere, enklere og sikrere å utvikle programmer ved å levere gjenbrukbar kode og verktøy som bidrar til å knytte sammen de ulike elementene i 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 Spring-baserte prosjekter begynte i 2003 som et svar på kompleksiteten ved tidlig Java-utvikling, og gir støtte for utvikling av Java-programmer. Navnet Spring alene refererer vanligvis til selve programrammeverket, eller hele gruppen med prosjekter eller moduler. Java Spring Boot er en spesifikk modul som er bygget som en utvidelse av Spring-rammeverket.
Så med denne bakgrunnen for hvordan Spring-rammeverket, Spring Boot og Java fungerer sammen, finner du her definisjonen av Spring Boot – verktøyet som strømlinjeformer og gir raskere utvikling av webprogrammer og mikrotjenester i Java-rammeverket Spring.
Noen ganger, fordi språket og/eller plattformen er Java, blir det referert til som "Java Spring Boot," "Java Spring-rammeverket" eller "Spring Boot-rammeverket." Men fordi det finnes andre tredjeparts rammeverk for Java, for eksempel Play and Hibernate, er det riktigere å si "Spring" og "Spring Boot."
Se artikkelen Hva er Java?for en drøftelse på overordnet nivå om det grunnleggende i Java
Hva er forskjellen på Spring og Spring Boot?
Som nevnt tidligere er Spring et Java-basert programrammeverk 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 på Spring Boot kontra Spring er det viktig å innse at selv om det kan være forskjeller i kjernefunksjoner, er alt innenfor Spring-familien.
For å få en fullstendig forståelse av forskjellene på Spring og Spring Boot må vi først definere noen viktige termer.
Hva er mikrotjenester?
MikrotjenesterMikrotjenester er en tilnærming til arkitektur for programvareutvikling. Ordet "mikro" i mikrotjenester refererer 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 forhåndsdefinerte API-dokumenter som kalles kontrakter. Den lille skalaen og relative isoleringen til disse mikrotjenestene har mange fordeler. Fordi denne typen arkitektur for eksempel 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 å tilpasse seg for bedriften og større feiltoleranse.
Hva er innsetting av avhengigheter?
Innsetting av avhengigheter (DI) er en designteknikk som brukes til å oppnå inversjon av kontroll (IoC). I objektorientert programmering som Java kalles objekter som er avhengige av andre objekter, for avhengigheter. Det mottakende eller avhengige objektet kalles vanligvis en klient, og objektet som klienten er avhengig av, kalles for en tjeneste. Innsetting av avhengigheter sender dermed 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 noen ganger kalles koding etter konvensjoner, er et konsept som brukes i programrammeverk for å redusere antall beslutninger som en utvikler må ta. Den følger prinsippet om å "ikke gjenta seg selv" for å unngå skriving av overflødig kode. Koding etter konvensjoner forsøker å opprettholde fleksibilitet, samtidig som en utvikler bare trenger å skrive kode for de ukonvensjonelle delene av programmet han utvikler. Når den ønskede atferden til programmet samsvarer med etablerte konvensjonene, vil programmet kjøre som standard uten at man trenger å skrive konfigurasjonsfiler. Utvikleren trenger bare å skrive konfigurasjonsfiler eksplisitt dersom den ønskede atferden skiller seg fra "konvensjonen."
Spring-rammeverk kontra Spring Boot
Spring | Spring Boot | |
---|---|---|
Hva er det? | Et rammeverk for webprogrammer med åpen kildekode basert på Java. | En utvidelse eller modul bygget på Spring-rammeverket. |
Hva gjør det? | Gir et fleksibelt, fullt konfigurerbart miljø ved hjelp av verktøy og biblioteker med forhåndsbygd kode for å utvikle tilpassede, løst sammenkoblede webprogrammer. | Gir muligheten til å skape frittstående Spring-programmer som bare kan kjøre umiddelbart uten behov for merknader, XML-konfigurasjon 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 avhengigheter | Automatisk konfigurasjon |
Har den innebygde servere? | Nei. I Spring må du konfigurere serverne eksplisitt. | Ja, Spring Boot leveres med innebygde HTTP-servere som Tomcat og Jetty. |
Hvordan konfigureres det? | Spring-rammeverket gir fleksibilitet, men konfigurasjonen må bygges manuelt. | Spring Boot konfigurerer Spring og andre tredjeparts rammeverk automatisk med standardprinsippet "konvensjon over konfigurasjon" . |
Må jeg vite hvordan jeg jobber med XML? | I Spring kreves det kunnskap om XML-konfigurasjon. | 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 programmer. | Som en Spring-modul har Spring Boot et CLI-verktøy for utvikling og testing av Spring-baserte programmer. |
Fungerer det fra en meningsfylt eller ikke-meningsfylt tilnærming? | Ikke-meningsfylt* | Meningsfylt* |
*Meningsfylt kontra 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-meningsfulle 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 fleste og i de fleste situasjoner. Programmet er skrevet slik at det holder seg tett opp til disse anbefalte fremgangsmåtene og ofte bruke konvensjonene. En meningsfylt tilnærming gjør det å samarbeide og få hjelp med et kodeprosjekt mye enklere – andre utviklere som har erfaring med dette rammeverket, vil ha umiddelbar kjennskap til det nye programmet, og kan hoppe rett inn.
Ikke-meningsfylt tilnærming
En ikke-meningsfylt tilnærming tas i bruk hvis alle løsninger krever omtrent samme mengde innsats eller kompleksitet. Den tar i utgangspunkt i at det ikke finnes én riktig måte å komme frem til en løsning på et problem på. I stedet gir den 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 av kontrollen i utviklernes hender. 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 ikke-meningsfylt.
Funksjoner og fordeler med Spring Boot
Til slutt den spennende delen – kjernemulighetene som Java Spring Boot gir utover Spring-rammeverket. Spring Boot gir en enklere og raskere måte for å sette opp, konfigurere og kjøre programmer. Den eliminerer det tunge arbeidet med konfigurasjon som kreves for å sette opp de fleste Spring-baserte programmer. Utviklere kan hoppe rett inn og bruke Spring Boot uten å måtte lære det underliggende Spring-rammeverket.
Slik bidrar Spring Boot-funksjoner til å strømlinjeforme programmeringsoppgaver i Java. Noen viktige funksjoner i Spring Boot er:
-
Frittstående programmer– Spring Boot bidrar 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– Med Spring Boot kan du bygge inn servere som Tomcat, Jetty eller Undertow direkte.
-
Meningsfylt tilnærming– Spring Boot forenkler buildkonfigurasjoner 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 ekstern konfigurasjon.
Fordeler med 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 tiden som brukes på beslutninger og gjentakende oppgaver, og frigjør tid til å fokusere på å utvikle og teste programmene.
-
Reduserer behovet for å skrive standardkode, merknader og XML-konfigurasjon– Utviklerne trenger ikke å generere kode eller konfigurere XML, og de trenger ikke engang å lære seg Spring-rammeverket om de ikke ønsker det.
-
Integrerer programmer i Spring-prosjektfamilien– Spring Boot-programmer integreres sømløst med andre prosjekter i økosystemet for Spring-rammeverk – slik som Spring Data, Spring Cloud, Spring Security – samt andre pålitelige skytjenester som Microsoft Azure Spring Cloud.
-
Gir verktøy for utvikling/testing– Med Spring Boots kommandolinjegrensesnittverktøy (CLI) og innebygde HTTP-servere blir det svært enkelt å opprette miljøer for utvikling/testing av Spring-baserte programmer.
-
Tilbyr kontrollprogrammer og verktøy som gjør utviklingen enklere– Spring Boot tilbyr kontrollprogrammer for å kunne jobbe med IMDB-kataloger, samt andre populære verktøy for bygningsautomatisering, for eksempel Apache Maven.
Opplæringsprogrammer for Java Spring Boot
Hvis du allerede er kjent med å bygge programmer ved hjelp av Spring-rammeverket, vil du sannsynligvis synes det er enkelt å lære Spring Boot ved hjelp av opplæringsprogrammene, prosjektstarterne og dokumentasjonen i denne delen. Men her er noen gode nyheter 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 å jobbe med det – før du lærer Spring-rammeverket, fordi du vil plukke opp mange av de grunnleggende rammeverkene underveis. Selv om dette ikke lærer deg alt som er å vite om rammeverket, vil det gi deg et godt forsprang hvis du bestemmer deg for å lære det senere.
En annen fordel med å lære seg Spring Boot, i tillegg til at programutviklingen blir mye raskere og mer effektiv, er at det også gjør deg i stand til å bruke andre Spring-funksjoner, nemlig Spring Data, Project Reactor og Spring Security.
Innsetting av avhengigheter
- XML-basert, dvs. <beans/> og <namespace:*/>.
- Merknadsbasert, dvs. @Component, @Autowired, @Inject.
- Java-basert, dvs. @Configuration-klasser, @Bean-metoder.
Inversjon av kontroll (IoC)
- ApplicationContext – rotgrensesnittet som fungerer som Spring IoC-beholder.
- BeansFactory – grensesnittet for å få tilgang til Spring-beholderen.
- Beans – objekter som opprettes, settes sammen og administreres av ApplicationContext.
Opplæring i Java Spring Boot for nybegynnere
Utvikle og bidra til å sikre et Java-program
Skap et Java-program med Spring Initializr ved hjelp av Spring Boot-starteren for Microsoft Entra ID (tidligere Azure Active Directory).
Distribuer dit første program til Azure Spring Cloud
Finn ut mer hvordan du skaper, klargjør og overvåker et enkelt Spring Boot-program bygget 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-nettrammeverk med åpen kildekode som tilbys av Spring, spesielt nyttig for programvareteknikere som utvikler webprogrammer og mikrotjenester.
-
"Spring Boot i Java" er en annen måte å si "Java Spring Boot"– de to termene 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 meningsfylte tilnærmingen fjerner mye av standardkoden og konfigurasjonen som kreves ved programutvikling og -distribusjon i Spring.
-
Ja, som nevnt ovenfor er Spring Boot spesielt nyttig for en mikrotjenestetilnærming til arkitektur for programvareutvikling. Mikrotjenester er en populær måte å bygge små, autonome team som kan arbeide uavhengig – og i sin natur – fungerer mikrotjenester bare i serverdelen.
-
Redusert utviklingstid, økt produktivitet og brukervennlighet er bare noen av fordelene med å utvikle Spring Boot-programmer.
-
Det finnes mange opplæringer, hurtigstarter og mye dokumentasjon for Spring-nettstedet samt Spring Boot Starters og dokumentasjon fra Microsoft Azure. Hvis du vil komme i gang med å distribuere Spring Boot-programmer med en gang, kan du ta en titt på nettseminaret Få Spring Boot-programmer raskere ut i skyen i stor skala.