我想在我们将启动spring boot应用程序的主spring引导类中传递JVM参数。
请您分享如何在Spring启动应用程序中设置JVM参数?
我尝试了以下选项,没有运气
System.setProperty("http.proxyHost", "X.X.X.X");
System.setProperty("http.proxyPort", "8080");
或者您可以将它用于春季启动
bootRun {
systemProperties "property1": "value1", "property2": "value2"
}
答案 0 :(得分:21)
使用-DargumentName添加JVM参数,即
-DargumentName="value1"
然后在spring应用程序中,您可以通过执行以下操作来检索值:
@Value("${argumentName}")
private String myVariable
希望这有帮助!
答案 1 :(得分:12)
Spring Boot有一个非常复杂的环境变量和配置属性管理。你可以做一些简单的事情,通过命令行传递值为“bar”的foo。
java -jar app.jar --foo="bar"
如果您还没有,那么下面的链接包含了您在Spring Boot应用程序中进行外部化配置所需的一切:
http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
<强>更新强>:
如果您正在运行Spring Boot应用程序,则应始终使用以下模式运行它:
$ java -jar <jar-name> [--key1="value1"]... [--keyN="valueN"]
并且不使用此处其他一些评论中建议的命令行。
答案 2 :(得分:4)
您可以在启动应用程序时使用-D开关设置系统属性
java -DsomeProperty=123 your.package.name.YourMainClassName
稍后在您的代码中,只需调用
即可获取属性值System.getPropetry("someProperty")
答案 3 :(得分:3)
您必须使用 @Value 注释。例如
@Value("#{systemProperties.test}")
你可以直接在bean属性中使用它,我在一个方法的参数中使用了一个例子。
@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;
}
}
要执行该程序,您需要将测试属性添加到 JVM属性。
-Dtest="hallo reos"
答案 4 :(得分:3)
您可以像这样运行您的应用:
$ java -jar app.jar --someProperty=123
申请电话中的:
import org.springframework.core.env.Environment;
@Autowired
private Environment env;
String someProperty= env.getProperty("someProperty");
答案 5 :(得分:3)
答案 6 :(得分:0)
这个选项看起来很有希望。
$ java -jar <jar-name> [--key1="value1"]... [--keyN="valueN"]
答案 7 :(得分:0)
您可以像这样运行您的应用:
$ java -server -Dmyproperty=blabla -jar myapp.jar
您可以在代码中访问myproperty的值。