如何在SpringBOOT中传递JVM参数

时间:2015-11-10 16:46:53

标签: spring spring-mvc spring-boot

我想在我们将启动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"
}

8 个答案:

答案 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)

您可能在app.conf文件中添加的JVM参数:

export JAVA_OPTS='-Dyour_param=1234'

来源:SPRING DOCS

答案 6 :(得分:0)

这个选项看起来很有希望。

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

答案 7 :(得分:0)

您可以像这样运行您的应用:

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

您可以在代码中访问myproperty的值。