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"
}
Cette option semble prometteuse.
$ Java -jar <jar-name> [--key1="value1"]... [--keyN="valueN"]
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!
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.
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")
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");
Arguments JVM que vous pourriez ajouter dans le fichier app.conf
:
export Java_OPTS='-Dyour_param=1234'
source: SPRING DOCS
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"
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.