web-dev-qa-db-fra.com

Comment passer les arguments de la machine virtuelle Java dans Spring BOOT

J'aimerais passer les arguments de la machine virtuelle Java dans la classe de démarrage principale où nous allons démarrer l'application de démarrage.

Pourriez-vous partager la définition des arguments de la machine virtuelle Java dans une application de démarrage printanier?

J'ai essayé les options ci-dessous et il n'y a pas de chance

System.setProperty("http.proxyHost", "X.X.X.X");
System.setProperty("http.proxyPort", "8080");

ou vous pouvez l'utiliser pour les bottes de printemps

bootRun {
    systemProperties "property1": "value1", "property2": "value2"
}
4
SpringForLiving

Cette option semble prometteuse.

$ Java -jar <jar-name> [--key1="value1"]... [--keyN="valueN"]
0
SpringForLiving

Ajoutez des arguments JVM avec -DargumentName i.e.

-DargumentName="value1"

Ensuite, dans votre application Spring, vous pouvez récupérer la valeur en procédant comme suit:

@Value("${argumentName}")
private String myVariable

J'espère que cela t'aides!

19
Kabir

Spring Boot dispose d’un environnement assez sophistiqué et d’une gestion des propriétés de configuration. Vous pouvez faire quelque chose d'aussi simple que cela pour passer foo avec la valeur "bar" via la ligne de commande.

Java -jar app.jar --foo="bar"

Si vous ne l'avez pas déjà fait, le lien ci-dessous contient tout ce dont vous avez besoin en matière d'externalisation de la configuration dans une application Spring Boot:

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

Mettre à jour:

Si vous exécutez une application Spring Boot, vous devez toujours l'exécuter en utilisant le modèle ci-dessous:

$ Java -jar <jar-name> [--key1="value1"]... [--keyN="valueN"]

Et ne pas utiliser la ligne de commande suggérée dans certains des autres commentaires ici.

9
Bloodysock

Vous pouvez définir les propriétés du système avec le commutateur -D lorsque vous démarrez votre application.

Java -DsomeProperty=123 your.package.name.YourMainClassName

Plus tard dans votre code, vous pouvez obtenir une valeur de propriété simplement en appelant

System.getPropetry("someProperty")
4
Nikita Magonov

Vous pouvez exécuter votre application comme ceci: 

$ Java -jar app.jar --someProperty=123

en appel d'application:

import org.springframework.core.env.Environment;
@Autowired
private Environment env;

String someProperty= env.getProperty("someProperty");
3
maciej

Arguments JVM que vous pourriez ajouter dans le fichier app.conf:

export Java_OPTS='-Dyour_param=1234'

source: SPRING DOCS

3

Vous devez utiliser l'annotation @Value . Par exemple

@Value("#{systemProperties.test}")

Vous pouvez l'utiliser directement dans une propriété de bean, j'ai un exemple d'utilisation dans un paramètre d'une méthode.

@SpringBootApplication
public class ReviewsMicroserviceApplication {

    public static void main(String[] args) {
        ApplicationContext ctx =  SpringApplication.run(ReviewsMicroserviceApplication.class, args);
        System.out.println(ctx.getBean("value"));
    }

    @Bean
    public String value(@Value("#{systemProperties.test}")String value){
        return value;
    }
}

Pour exécuter le programme, vous devez ajouter la propriété test aux propriétés de JVM .

 -Dtest="hallo reos"
3
reos

Vous pouvez exécuter votre application comme ceci:

$ Java -server -Dmyproperty=blabla -jar myapp.jar

et vous pouvez accéder à la valeur de myproperty dans le code.

0
Sourabh Kanojiya