我通过 Spring 批处理项目获得了 Spring Boot。在我的 BatchConfiguration 中,我想获取命令行参数,所以我 @Autowire Environment 对象并尝试获取我的道具,但我得到了空值。
经过一些调试后,我发现我可以通过特殊属性名称“nonOptionArgs”获取所有命令行参数,但在这种情况下,我得到了所有参数的纯字符串。有更好的解决方案吗?
谢谢
我通过 Spring 批处理项目获得了 Spring Boot。在我的 BatchConfiguration 中,我想获取命令行参数,所以我 @Autowire Environment 对象并尝试获取我的道具,但我得到了空值。
经过一些调试后,我发现我可以通过特殊属性名称“nonOptionArgs”获取所有命令行参数,但在这种情况下,我得到了所有参数的纯字符串。有更好的解决方案吗?
谢谢
您在自动布线环境中做的一切都是正确的。确保在命令行中使用“--”传递参数
从文档:
默认情况下,SpringApplication 会将任何命令行选项参数(以“--”开头,例如--server.port=9000)转换为属性并将其添加到 Spring 环境中。如上所述,命令行属性始终优先于其他属性源。
你可以像这样运行你的应用程序:
$ java -server -Dmyproperty=blabla -jar myapp.jar
并且可以在代码中访问 myproperty 的值。