Kommandolinjeargumenter i Spring Boot

1. Oversigt

I denne hurtige vejledning diskuterer vi, hvordan du sender kommandolinjeargumenter til en Spring Boot-applikation.

Vi kan bruge kommandolinjeargumenter til at konfigurere vores applikation, tilsidesætte applikationsegenskaber eller videregive brugerdefinerede argumenter.

2. Maven kommandolinjeargumenter

Lad os først se, hvordan vi kan sende argumenter, mens vi kører vores applikation ved hjælp af Maven Plugin.

Senere ser vi, hvordan du får adgang til argumenterne i vores kode.

2.1. Spring Boot 1.x

For Spring Boot 1.x kan vi videregive argumenterne til vores applikation ved hjælp af -Drun.arguments:

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

Vi kan også overføre flere parametre til vores app:

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

Noter det:

  • Argumenter skal adskilles med komma
  • Hvert argument skal have forud for -
  • Vi kan også videregive konfigurationsegenskaber, som f.eks spring.main.banner-mode vist i eksemplet ovenfor

2.2. Spring Boot 2.x

For Spring Boot 2.x kan vi videregive argumenterne ved hjælp af -Dspring-boot.run.arguments:

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

3. Gradle kommandolinjeargumenter

Lad os derefter opdage, hvordan vi sender argumenter, mens vi kører vores applikation ved hjælp af Gradle Plugin.

Vi bliver nødt til at konfigurere vores bootRun opgave i build.gradle fil:

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

Nu kan vi videregive kommandolinjeargumenterne som følger:

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

4. Tilsidesættelse af systemegenskaber

Bortset fra at sende tilpassede argumenter kan vi også tilsidesætte systemegenskaber.

For eksempel er her vores application.properties fil:

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

For at tilsidesætte server.port værdi, skal vi videregive den nye værdi på følgende måde (for Spring Boot 1.x):

mvn spring-boot: kør -Drun.arguments = - server.port = 8085

Tilsvarende for Spring Boot 2.x:

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

Noter det:

  • Spring Boot konverterer kommandolinjeargumenter til egenskaber og tilføjer dem som miljøvariabler
  • Vi kan bruge korte kommandolinjeargumenter –Port = 8085 i stedet for –Server.port = 8085 ved at bruge en pladsholder i vores application.properties:
    server.port = $ {port: 8080}
  • Kommandolinjeargumenter har forrang over application.properties værdier

Hvis det er nødvendigt, kan vi stoppe vores applikation fra at konvertere kommandolinjeargumenter til egenskaber:

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

5. Adgang til kommandolinjeargumenter

Lad os se, hvordan vi kan få adgang til kommandolinjeargumenterne fra vores applikationer hoved () metode:

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

Dette vil udskrive de argumenter, vi har sendt til vores ansøgning fra kommandolinjen, men vi kan også bruge dem senere i vores ansøgning.

6. Aflevering Kommandolinjeargumenter til SpringBootTest

Med frigivelsen af ​​Spring Boot 2.2 fik vi muligheden for at indsprøjte kommandolinjeargumenter under test ved hjælp af @SpringBootTest ogdet er argumenterer attribut:

@SpringBootTest (args = "--spring.main.banner-mode = off") offentlig klasse ApplicationTest {@Test offentlig ugyldig, nårUsingSpringBootTestArgs_thenCommandLineArgSet (@Autowired Environment env) {Assertions.assertThat (env.getPropertyanner ("spring.main) mode ")). isEqualTo (" off "); }}

7. Konklusion

I denne artikel lærte vi, hvordan vi overførte argumenter til vores Spring Boot-applikation fra kommandolinjen, og hvordan man gør det ved hjælp af både Maven og Gradle.

Vi har også vist, hvordan du kan få adgang til disse argumenter fra din kode for at konfigurere din applikation.


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