到目前为止,我发现了两种在启动时配置spring boot应用程序的方法,一种使用< code>-D,另一种使用< code> - ,如下所示:
java -jar -Dspring.profiles.active=test app.jar
java -jar --spring.profiles.active=test app.jar
有时,第一个有效,有时第二个有效。正如开发人员所发现的那样,当以下示例中的 run
方法未给出 args
参数时,--
方法不起作用,但 -D
起作用。
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
而今天,我在命令行配置日志,发现 -Dlogback.configuration 文件=/full_path/日志.xml不起作用,
但 --logging.config=file:日志.xml
工作。
以上可能有其他原因,可能< code > log back . configuration file 是错误的,但它的行为就像< code>-D和< code> - 的区别。
那么我的问题是-D
和--是什么
,是Java还是Spring的东西?为什么它在不工作和工作之间有所不同?
要解释这个答案,只需打开命令提示符或终端窗口
$ java --help
Usage: java [options] <mainclass> [args...]
(to execute a class)
or java [options] -jar <jarfile> [args...]
(to execute a jar file)
...
Arguments following the main class, source file, -jar <jarfile>,
-m or --module <module>/<mainclass> are passed as the arguments to
main class.
where options include:
...
-D<name>=<value>
set a system property
...
基于此帮助文档,-D
-D
是用于设置系统属性的选项(可以作为VM参数调用)
-D
标准java选项将系统属性值设置为耦合属性,默认情况下,SpringApplication
将任何命令行选项参数(实质上是String
,对应于前缀为--
的
String[]args
的值,例如-spring.profiles.active=test
)转换为属性,并将其添加到spring环境中,最终覆盖具有相同名称的属性(如果存在)。
我在命令行选项的错误位置看到了不可预测行为的可能原因,如<code>java-jar--spring.profiles。活动=测试应用程序。jar
之所以包含,是因为所有命令行选项都应该位于jar之后,因此命令应该重写为<code>java-jar app。jar--spring.profiles。active=test以确保Spring框架正确转换为属性。请注意,如果您的Spring应用程序在将属性作为命令行选项参数传递时试图从系统中读取值,则应用程序将无法工作,当您设置系统属性,并且Spring应用软件试图将其作为命令行属性读取时,也会发生同样的情况。
对于logback问题,--logging.config=file:logback。xml
命令行选项参数有效,因为它是否等于覆盖日志记录的值。配置
Spring框架中存在的通用应用程序属性,另一个<code>logback。configurationFile选项不是Spring公共属性,因此框架不会自动处理它。
我在我的系统上设置了以下东西。 null
我有一个spring启动应用程序,我需要通过进入文件夹目录并通过命令行启动我的web应用程序来启动它。我有一门课叫应用。java及其内部代码如下所示。 我设置了类路径,然后试图运行命令"",但我得到了这个错误消息""
问题内容: 我有一个Java应用程序。可以使用几个命令行标志启动它。我想提供按用户“重新启动”应用程序的功能。 当前,我们将参数保存在控制文件中,在重新启动应用程序时将其读取。重新启动应用程序的最佳方法是什么-如何保留命令行参数? 问题答案: 使用RuntimeMXBean,您可以检索,Classpath,Bootclasspath等。
“Spring-Boot-AutoConfigure”,版本:'2.4.1'
我有一个应用程序,它有两个配置文件,并且还需要一个命令行参数。我想使用命令运行这个应用程序,但每次我这样做时,只有配置文件被选中。 application.properties(默认配置文件) application-prod.properties(产品剖面) 我尝试执行以下命令和时间只有配置文件被选中。 我是否以正确的方式传递spring boot配置文件名称? 还请告知,如果这可以实现使用命令