Spring MVC 如何在SpringBOOT中传递JVM参数

fkaflof6  于 2022-11-24  发布在  Spring
关注(0)|答案(9)|浏览(209)

我想在主要的spring Boot 类中传递JVM参数,我们将在其中启动spring boot应用程序。
你能分享一下如何在spring Boot 应用程序中设置JVM参数吗?
我尝试了以下选项,但没有成功

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

或者你可以用这个做 Spring Boot

bootRun {
    systemProperties "property1": "value1", "property2": "value2"
}
w8f9ii69

w8f9ii691#

使用-DargumentName添加JVM参数,即

-DargumentName="value1"

然后在您的spring应用程序中,您可以通过执行以下操作来检索该值:

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

希望这对你有帮助!

irlmq6kh

irlmq6kh2#

Sping Boot 有一个非常复杂的环境变量和配置属性管理。你可以做一些简单的事情,比如通过命令行传递值为“bar”的foo。

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

如果您还没有,下面的链接提供了您所需的所有Sping Boot 应用程序中配置外部化的方法:
http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

更新

如果您正在运行Sping Boot 应用程序,则应始终使用以下模式运行它:

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

而不是使用这里的一些其他评论中建议的命令行。

qlckcl4x

qlckcl4x3#

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

export JAVA_OPTS='-Dyour_param=1234'

资料来源:SPRING DOCS

pprl5pva

pprl5pva4#

启动应用程序时,可以使用-D开关设置系统属性

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

稍后在代码中,只需调用

System.getPropetry("someProperty")
daolsyd0

daolsyd05#

您可以按如下方式运行应用程序:

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

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

ubof19bj

ubof19bj6#

您可以按如下方式运行应用程序:

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

在应用程序调用中:

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

String someProperty= env.getProperty("someProperty");
mbzjlibv

mbzjlibv7#

必须使用**@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;
    }
}

为了执行程序,您需要将test属性添加到JVM属性中。

-Dtest="hallo reos"
wljmcqd8

wljmcqd88#

当我使用Maven插件运行Sping Boot 应用程序时,我必须使用-Dspring-boot.run.jvmArguemtns=xxx设置属性,但这并不是真正设置System-Properties,而是设置Spring-Properties(在application.xml中定义)
此处为启动Sping Boot 应用程序的命令,其属性为:

mvn spring-boot:run -D"spring-boot.run.jvmArguments=-Dserver.port=8399 -Dactivemq.url=http://localhost:61616"
ctrmrzij

ctrmrzij9#

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@SpringBootApplication
public class DemoApplication {

    @Autowired
    MyFantasticClass myFantasticClass;
    
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
    
    @Bean
    CommandLineRunner commandLineRunner() {
        return args -> {
            System.out.println(myFantasticClass.getMyFantasticProperty());
        };
    }
}

@Component
class MyFantasticClass{
    @Value("${myFantasticProperty}")
    String myFantasticProperty;
    
    String getMyFantasticProperty() {
        return myFantasticProperty;
    }
}

相关问题