英文:
How to pass programs arguments to spring boot command line application?
问题
Java程序通常在eclipse上有一个选项来传递参数:
我正在尝试在springboot和maven中做同样的事情,但没有选项可以这样做。
如何将参数传递给主类?
public static void main(String[] args) {
// 禁用横幅,不想看到Spring标志
SpringApplication app = new SpringApplication(EnvioTelesapApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
编辑:
使用 -Dspring-boot.run.arguments="T111111,SS"
将其视为一个参数。
英文:
Java program usually have an option on eclipse to pass the arguments:
I'm trying to do the same with springboot and maven, but there is no option to do that
How can I pass the arguments to the main class?
public static void main(String[] args) {
// disabled banner, don't want to see the spring logo
SpringApplication app = new SpringApplication(EnvioTelesapApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
EDIT :
Using -Dspring-boot.run.arguments="T111111,SS" is taking all as one argument
答案1
得分: 3
使用Spring Boot时,您可能应该充分利用application.properties
文件,并根据需要进行覆盖(包括通过命令行)。但是,由于您是将Spring应用程序作为Maven构建而不是Java应用程序运行的,因此在运行时可能看不到“arguments”选项卡。在这种情况下,您需要将参数作为Maven目标的一部分传递:
- Spring Boot 1.x:
spring-boot:run -Drun.arguments=--spring.main.banner-mode=off,--customArgument=custom
- Spring Boot 2.x:
spring-boot:run -Dspring-boot.run.arguments=--spring.main.banner-mode=off,--customArgument=custom
详细了解Spring中的配置工作方式:https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
编辑:
一旦属性被定义(在application-properties
文件、命令行参数、环境变量等中),可以通过@Value("${foo}")
来检索属性,其中foo
是属性名。
此外,如果您有兴趣将命令行参数传递给通过jar文件运行的Spring Boot应用程序,语法将是:java -jar myjar.jar --argOne=value --argTwo=value
,正如Spring Boot文档中所详细说明的那样。
英文:
When using spring boot you probably should be taking advantages of application.properties
file and overriding them as needed (including via command line).
Still, you don't see the 'arguments' tabs as you're running your spring application as a maven build rather than a Java application. In this case, you'd need to pass the arguments as part of the maven goal itself:
- Spring Boot 1.x:
spring-boot:run -Drun.arguments=--spring.main.banner-mode=off,--customArgument=custom
- Spring Boot 2.x:
spring-boot:run -Dspring-boot.run.arguments=--spring.main.banner-mode=off,--customArgument=custom
Check how the configuration works in spring in more details: https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
Edit:
Once the properties are defined (in a application-properties
file, command line arguments, environment variable, etc.) it can be retrieved by means of @Value("${foo}")
where foo
is the property name.
Also, if you are interested in passing command line arguments to a Spring Boot application running via a jar file, the syntax would be: java -jar myjar.jar --argOne=value --argTwo=value
as well documented in
Spring Boot documentation
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论