如何将空字符串作为命令行属性传递给Spring?

如何将空字符串作为命令行属性传递给Spring?,spring,intellij-idea,properties,command-line-arguments,Spring,Intellij Idea,Properties,Command Line Arguments,仅供参考:我正在使用Intellij的“运行/调试配置”工具 我想通过命令行将空字符串作为属性传递给我的应用程序: --spring.ldap.username= 我试过: --spring.ldap.username= # results in parse error --spring.ldap.username='' --spring.ldap.username="" # results in parse error --spring.ldap.username=\"\" 实际解析成功的

仅供参考:我正在使用Intellij的“运行/调试配置”工具

我想通过命令行将空字符串作为属性传递给我的应用程序:

--spring.ldap.username=
我试过:

--spring.ldap.username= # results in parse error
--spring.ldap.username=''
--spring.ldap.username="" # results in parse error
--spring.ldap.username=\"\"
实际解析成功的尝试产生了错误的值,如我尝试打印“空”字符串时所示:

System.out.println(environment.getProperty("spring.ldap.username"));

// returns:
// ''
// ""
在application.properties文件中将同一属性设置为空字符串非常有效:

spring.ldap.username=
相同的打印语句:

// returns:
//
// ^^ totally empty string

我缺少一个技巧吗?

试试这个:
--spring.ldap.username
(如果您将
=
,它将解析为null)

因此,这可以通过使用常规JVM参数来实现

而不是

--my.property=
使用

我想本机JVM参数可以接受空字符串

在IntelliJ中,您可以将它们添加到运行/调试配置窗口的相应字段中,如下所示:


对于另一个问题,还有一些关于将JVM参数传递给Spring应用程序的更多信息。

您可以通过应用程序的运行/调试配置中的
环境变量输入它们吗,但是我想通过命令行传递这些参数,你可能想得太多了——在代码中把参数的值默认为空字符串就足够了吗?是否有特殊需要将空字符串作为参数接收?我认为如果将空字符串(在本例中是一个合理的值)传递给标志不会破坏功能,则可以简化系统中其他地方的代码。尽管如此,我现在可能会同意你的建议;这同样有效。我不知道为什么我从来没有想过尝试这个。
-Dmy.property=