Kommandolinjeargumenter i Spring Boot

1. Oversikt

I denne raske opplæringen vil vi diskutere hvordan du overfører kommandolinjeargumenter til et Spring Boot-program.

Vi kan bruke kommandolinjeargumenter for å konfigurere applikasjonen, overstyre applikasjonsegenskaper eller overføre egendefinerte argumenter.

2. Maven kommandolinjeargumenter

La oss først se hvordan vi kan sende argumenter mens vi kjører applikasjonen vår ved hjelp av Maven Plugin.

Senere får vi se hvordan du får tilgang til argumentene i koden vår.

2.1. Spring Boot 1.x

For Spring Boot 1.x kan vi sende argumentene til applikasjonen vår ved hjelp av -Drun.arguments:

mvn spring-boot: run -Drun.arguments = - customArgument = custom

Vi kan også overføre flere parametere til appen vår:

mvn spring-boot: run -Drun.arguments = - spring.main.banner-mode = off, - customArgument = custom

Noter det:

  • Argumentene bør skilles med komma
  • Hvert argument skal være foran -
  • Vi kan også overføre konfigurasjonsegenskaper, som spring.main.banner-mode vist i eksemplet ovenfor

2.2. Spring Boot 2.x

For Spring Boot 2.x kan vi sende argumentene ved hjelp av -Dspring-boot.run.arguments:

mvn spring-boot: run -Dspring-boot.run.arguments = - spring.main.banner-mode = off, - customArgument = custom

3. Gradle Command-Line Argumenter

La oss deretter oppdage hvordan vi kan sende argumenter mens du kjører programmet vårt ved hjelp av Gradle Plugin.

Vi må konfigurere vår bootRun oppgave i build.gradle fil:

bootRun {if (project.hasProperty ('args')) {args project.args.split (',')}}

Nå kan vi sende kommandolinjeargumentene som følger:

./gradlew bootRun -Pargs = - spring.main.banner-mode = off, - customArgument = custom

4. Overstyring av systemegenskaper

Annet enn å sende tilpassede argumenter, kan vi også overstyre systemegenskapene.

For eksempel, her er vår application.properties fil:

server.port = 8081 spring.application.name = SampleApp

Å overstyre server.port verdi, må vi sende den nye verdien på følgende måte (for Spring Boot 1.x):

mvn spring-boot: run -Drun.arguments = - server.port = 8085

Tilsvarende for Spring Boot 2.x:

mvn spring-boot: run -Dspring-boot.run.arguments = - server.port = 8085

Noter det:

  • Spring Boot konverterer kommandolinjeargumenter til egenskaper og legger dem til som miljøvariabler
  • Vi kan bruke korte kommandolinjeargumenter –Port = 8085 i stedet for –Server.port = 8085 ved å bruke en plassholder i vår application.properties:
    server.port = $ {port: 8080}
  • Kommandolinjeargumenter går foran application.properties verdier

Om nødvendig kan vi stoppe søknaden vår fra å konvertere kommandolinjeargumenter til egenskaper:

@SpringBootApplication public class Application utvider SpringBootServletInitializer {public static void main (String [] args) {SpringApplication application = new SpringApplication (Application.class); application.setAddCommandLineProperties (false); application.run (args); }}

5. Få tilgang til kommandolinjeargumenter

La oss se hvordan vi kan få tilgang til kommandolinjeargumentene fra applikasjonen vår hoved() metode:

@SpringBootApplication public class Application utvider SpringBootServletInitializer {public static void main (String [] args) {for (String arg: args) {System.out.println (arg); } SpringApplication.run (Application.class, args); }}

Dette vil skrive ut argumentene vi sendte til applikasjonen vår fra kommandolinjen, men vi kan også bruke dem senere i applikasjonen.

6. Passer Kommandolinjeargumenter til SpringBootTest

Med utgivelsen av Spring Boot 2.2 fikk vi muligheten til å injisere kommandolinjeargumenter under testing ved hjelp av @SpringBootTest og dets argumenterer Egenskap:

@SpringBootTest (args = "--spring.main.banner-mode = off") public class ApplicationTest {@Test public void whenUsingSpringBootTestArgs_thenCommandLineArgSet (@Autowired Environment env) {Assertions.assertThat (env.getPropertyanner ("spring.main) modus ")). isEqualTo (" av "); }}

7. Konklusjon

I denne artikkelen lærte vi hvordan vi kan føre argumenter til vår Spring Boot-applikasjon fra kommandolinjen, og hvordan du gjør det ved å bruke både Maven og Gradle.

Vi har også vist hvordan du får tilgang til argumentene fra koden din, for å konfigurere applikasjonen.


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