Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式向Spring Boot Spring应用程序传递附加参数?_Java_Spring_Spring Boot - Fatal编程技术网

Java 如何以编程方式向Spring Boot Spring应用程序传递附加参数?

Java 如何以编程方式向Spring Boot Spring应用程序传递附加参数?,java,spring,spring-boot,Java,Spring,Spring Boot,我可能遗漏了一些明显的东西,但我正试图弄清楚如何在运行应用程序时通过编程从Spring Boot Spring应用程序设置/覆盖属性 默认情况下,我知道我可以将命令行参数传递给启动应用程序,但我希望将spring启动应用程序嵌入另一个java应用程序中,并从父应用程序中执行。我把它作为我的项目的一个依赖项 在我的Spring Boot应用程序中,我有以下内容: static public main(String [] args){ SpringApplication app = new

我可能遗漏了一些明显的东西,但我正试图弄清楚如何在运行应用程序时通过编程从Spring Boot Spring应用程序设置/覆盖属性

默认情况下,我知道我可以将命令行参数传递给启动应用程序,但我希望将spring启动应用程序嵌入另一个java应用程序中,并从父应用程序中执行。我把它作为我的项目的一个依赖项

在我的Spring Boot应用程序中,我有以下内容:

static public main(String [] args){
    SpringApplication app = new SpringApplication(Sync.class);
    app.setWebEnvironment(false);
    app.setShowBanner(false);
    app.run(args);
}
app.setProperty("username", "Eric");
这允许我设置命令行参数,例如-userName=Eric等

虽然我意识到我可以在技术上以编程的方式做同样的事情,并在代码中将-userName=Eric添加到我的args[]数组中,但我认为必须有另一种更干净/更整洁的方式将参数/属性传递给我的应用程序。但我似乎在SpringApplication中找不到任何其他方法允许我设置该类型的值

我正在寻找能让我做以下事情的东西:

static public main(String [] args){
    SpringApplication app = new SpringApplication(Sync.class);
    app.setWebEnvironment(false);
    app.setShowBanner(false);
    app.run(args);
}
app.setProperty("username", "Eric");

我错过了什么明显的东西吗

除了您建议的之外,我没有找到修改应用程序参数的方法,但我认为您的用例适合外部配置:


如果您提前知道需要的值,我认为application.config文件就是它们应该存在的地方。然后您可以通过@Value注释等访问它们。

除了您建议的之外,我没有找到修改应用程序参数的方法,但我认为您的用例适合外部配置:


如果您提前知道需要的值,我认为application.config文件就是它们应该存在的地方。然后,您可以通过@Value注释等访问它们。

当您需要对正在创建的应用程序进行更多控制时,您可以使用SpringApplicationBuilder,在本例中还可以使用其方法。例如:

 new SpringApplicationBuilder(Application.class)
            .properties("foo=bar").run(args);

还有一些变量采用属性和映射。

当您需要对正在创建的应用程序进行更多控制时,可以使用SpringApplicationBuilder,在本例中还可以使用其方法。例如:

 new SpringApplicationBuilder(Application.class)
            .properties("foo=bar").run(args);

还有一些变量采用属性和映射。

如果您已经想硬编码它,您为什么不想在application.Properties中设置它呢?我已经简化了一点用例,但是参数可以在调用应用程序中配置,因此,硬编码application.properties文件不是我想做的事情。如果您已经想硬编码它,您为什么不想在application.properties中设置它呢?我已经简化了一点用例,但参数在调用应用程序中是可配置的,因此,硬编码application.properties文件并不是我想做的事情,仅此而已。我不能提前知道他们的情况。调用应用程序正在指定参数。我只是想把参数从命令行移到执行调用,就是这样。我不能提前知道他们的情况。调用应用程序正在指定参数。我只是想把参数从命令行移到执行调用。