Arguments de ligne de commande au démarrage du printemps

Arguments de ligne de commande au démarrage initial

1. Vue d'ensemble

Dans ce rapide didacticiel, nous expliquerons comment transmettre des arguments de ligne de commande à une application Spring Boot.

Nous pouvons utiliser des arguments de ligne de commande pour configurer notre application, remplacer les propriétés de l'application ou transmettre des arguments personnalisés.

2. Arguments de ligne de commande Maven

Voyons d'abord comment nous pouvons transmettre des arguments lors de l'exécution de notre application à l'aide du plug-in Maven.

Plus tard, nous verrons comment accéder aux arguments de notre code.

2.1. Spring Boot 1.x

Pour Spring Boot 1.x, nous pouvons transmettre les arguments à notre application en utilisant-Drun.arguments:

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

Nous pouvons également transmettre plusieurs paramètres à notre application:

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

Notez que:

  • Les arguments doivent être séparés par des virgules

  • Chaque argument doit être précédé de -

  • Nous pouvons également passer des propriétés de configuration, commespring.main.banner-mode montré dans l'exemple ci-dessus

2.2. Spring Boot 2.x

Pour Spring Boot 2.x, nous pouvons passer les arguments en utilisant-Dspring-boot.run.arguments:

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

3. Arguments de ligne de commande Gradle

Ensuite, découvrons comment transmettre des arguments lors de l'exécution de notre application à l'aide du plug-in Gradle.

Nous devrons configurer notre tâchebootRun dans le fichierbuild.gradle:

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

Maintenant, nous pouvons passer les arguments de ligne de commande comme suit:

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

4. Remplacement des propriétés système

En plus de passer des arguments personnalisés, nous pouvons également remplacer les propriétés du système.

Par exemple, voici notre fichierapplication.properties:

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

Pour remplacer la valeur deserver.port, nous devons transmettre la nouvelle valeur de la manière suivante (pour Spring Boot 1.x):

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

De même pour Spring Boot 2.x:

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

Notez que:

  • Spring Boot convertit les arguments de ligne de commande en propriétés et les ajoute en tant que variables d'environnement

  • Nous pouvons utiliser des arguments de ligne de commande courts–port=8085 au lieu de–server.port=8085 en utilisant un espace réservé dans nosapplication.properties:

    server.port=${port:8080}
  • Les arguments de ligne de commande ont priorité sur les valeursapplication.properties

Si nécessaire, nous pouvons empêcher notre application de convertir les arguments de ligne de commande en propriétés:

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

5. Accès aux arguments de ligne de commande

Voyons comment nous pouvons accéder aux arguments de ligne de commande à partir de la méthodemain() de notre application:

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

Cela affichera les arguments que nous avons passés à notre application à partir de la ligne de commande, mais nous pourrons également les utiliser plus tard dans notre application.

6. Conclusion

Dans cet article, nous avons appris à passer des arguments à notre application Spring Boot à partir de la ligne de commande et à le faire à l'aide de Maven et de Gradle.

Nous avons également montré comment vous pouvez accéder à ces arguments à partir de votre code, afin de configurer votre application.