如何将空字符串作为命令行属性传递给Spring?
仅供参考:我正在使用Intellij的“运行/调试配置”工具 我想通过命令行将空字符串作为属性传递给我的应用程序:如何将空字符串作为命令行属性传递给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=\"\" 实际解析成功的
--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=