Spring Boot Without A Web Server

1. Introduksjon

Spring Boot er et flott rammeverk for raskt å lage nye Java-applikasjoner for en rekke brukssaker. En av de mest populære bruksområdene er som en webserver, og bruker en av de mange støttede innebygde servletcontainere og malmotorer.

Derimot, Spring Boot har en rekke bruksområder som ikke krever en webserver: konsollapplikasjoner, jobbplanlegging, batch- eller strømbehandling, serverløse applikasjoner og mer.

I denne opplæringen vil vi se på flere forskjellige måter å bruke Spring Boot uten en webserver.

2. Bruke avhengigheter

Den enkleste måten å forhindre at en Spring Boot-applikasjon starter en innebygd webserver er å ikke inkluderer startserveren til webserveren i våre avhengigheter.

Dette betyr ikke å inkludere spring-boot-starter-web avhengighet i enten Maven POM eller Gradle build-filen. I stedet vil vi bruke det mer grunnleggende spring-boot-starter avhengighet i stedet.

Husk det er mulig for Tomcat-avhengigheter å bli inkludert i applikasjonen vår som transitive avhengigheter. I dette tilfellet må vi kanskje ekskludere Tomcat-biblioteket fra den avhengigheten som inkluderer det.

3. Endring av fjærapplikasjonen

En annen måte å deaktivere den innebygde webserveren i Spring Boot er ved å bruke kode. Vi kan bruke enten SpringApplicationBuilder:

ny SpringApplicationBuilder (MainApplication.class) .web (WebApplicationType.NONE) .run (args);

Eller vi kan bruke referansen til SpringApplication:

SpringApplication-applikasjon = ny SpringApplication (MainApplication.class); application.setWebApplicationType (WebApplicationType.NONE); application.run (args);

I begge tilfeller, vi har fordelen av å holde servlet og container-API-ene tilgjengelige på klassestien. Dette betyr at vi fortsatt kan bruke webserverbibliotekene uten å starte webserveren. Dette kan for eksempel være nyttig hvis vi vil bruke dem til å skrive tester eller bruke APIene deres i vår egen kode.

4. Bruke applikasjonsegenskaper

Å bruke kode for å deaktivere webserveren er et statisk alternativ - det vil påvirke applikasjonen vår uansett hvor vi distribuerer den. Men hva om vi vil opprette webserveren under spesifikke omstendigheter?

I dette tilfellet kan vi bruke egenskaper for vårapplikasjon:

spring.main.web-application-type = none

Eller ved bruk av tilsvarende YAML:

vår: hoved: webapplikasjonstype: ingen

Fordelen med denne tilnærmingen er at vi betinget kan aktivere webserveren. Ved hjelp av vårprofiler eller -betingelser kan vi kontrollere webserveroppførselen i forskjellige distribusjoner.

For eksempel kan vi ha webserveren i gang bare for å eksponere beregninger eller andre vårendepunkter mens vi holder den deaktivert i produksjonen av sikkerhetsmessige årsaker.

Merk at noen tidligere versjoner av Spring Boot brukte en boolsk eiendom navngitt web-miljø for å aktivere og deaktivere webserveren. Med adopsjonen av både tradisjonelle og reaktive containere i Spring Boot, eiendommen har fått nytt navn og bruker nå en enum.

5. Konklusjon

Det er mange grunner til å lage Spring Boot-applikasjoner uten en webserver. I denne opplæringen har vi sett flere måter å gjøre dette på. Hver har sine egne fordeler og ulemper, så vi bør velge den tilnærmingen som best oppfyller våre behov.


$config[zx-auto] not found$config[zx-overlay] not found