Spring Boot uden en webserver

1. Introduktion

Spring Boot er en god ramme til hurtigt at oprette nye Java-applikationer til en række brugssager. En af de mest populære anvendelser er som en webserver ved hjælp af en af ​​de mange understøttede integrerede servletcontainere og skabelonmotorer.

Imidlertid, Spring Boot har en række anvendelser, der ikke kræver en webserver: konsolapplikationer, jobplanlægning, batch- eller stream-behandling, serverløse applikationer og mere.

I denne vejledning ser vi på flere forskellige måder at bruge Spring Boot uden en webserver.

2. Brug af afhængigheder

Den nemmeste måde at forhindre en Spring Boot-applikation i at starte en integreret webserver er at inkluderer ikke webserverstarteren i vores afhængigheder.

Dette betyder ikke at inkludere spring-boot-starter-web afhængighed i enten Maven POM eller Gradle build-filen. I stedet for vil vi bruge det mere basale spring-boot-starter afhængighed i stedet.

Huske det er muligt for Tomcat-afhængigheder at blive inkluderet i vores applikation som transitive afhængigheder. I dette tilfælde skal vi muligvis ekskludere Tomcat-biblioteket fra den afhængighed, der inkluderer det.

3. Ændring af fjederapplikationen

En anden måde at deaktivere den integrerede webserver i Spring Boot er ved hjælp af kode. Vi kan bruge enten SpringApplicationBuilder:

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

Eller vi kan bruge henvisningen til SpringApplication:

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

I begge tilfælde, Vi har fordelen ved at holde servlet og container-API'erne tilgængelige på klassestien. Dette betyder, at vi stadig kan bruge webserverbibliotekerne uden at starte webserveren. Dette kan f.eks. Være nyttigt, hvis vi vil bruge dem til at skrive tests eller bruge deres API'er i vores egen kode.

4. Brug af applikationsegenskaber

Brug af kode til at deaktivere webserveren er en statisk mulighed - det påvirker vores applikation, uanset hvor vi implementerer den. Men hvad hvis vi vil oprette webserveren under specifikke omstændigheder?

I dette tilfælde kan vi bruge Spring applikationsegenskaber:

spring.main.web-application-type = ingen

Eller ved hjælp af den tilsvarende YAML:

fjeder: hoved: webapplikationstype: ingen

Fordelen ved denne tilgang er, at vi betinget kan aktivere webserveren. Ved hjælp af Spring-profiler eller -betingelser kan vi kontrollere webserverens adfærd i forskellige implementeringer.

For eksempel kunne vi kun have webserveren kørende under udvikling for at eksponere metrics eller andre Spring-endepunkter, mens vi holder den deaktiveret i produktionen af ​​sikkerhedsmæssige årsager.

Bemærk, at nogle tidligere versioner af Spring Boot brugte en boolsk ejendom navngivet web-miljø for at aktivere og deaktivere webserveren. Med vedtagelsen af ​​både traditionelle og reaktive containere i Spring Boot, ejendommen er blevet omdøbt og bruger nu en enum.

5. Konklusion

Der er mange grunde til at oprette Spring Boot-applikationer uden en webserver. I denne vejledning har vi set flere måder at gøre dette på. Hver har sine egne fordele og ulemper, så vi bør vælge den tilgang, der bedst opfylder vores behov.


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