Spring 在配置代码中启动获取命令行参数

Spring boot get command line args in configuration code

我用 Spring 批处理项目启动了 Spring。在我的 BatchConfiguration 中,我想获取命令行参数,所以我 @Autowire Environment 对象并尝试获取我的道具,但我得到的是空值。

经过一些调试后,我发现我可以通过特殊的 属性 名称 "nonOptionArgs" 获取所有命令行参数,但在这种情况下,我得到了所有传递的参数的纯字符串。有没有更好的解决方案?

谢谢

您在自动装配环境中所做的一切都是正确的。确保在命令行中使用“--”

传递参数

来自documentation

By default SpringApplication will convert any command line option arguments (starting with ‘--’, e.g. --server.port=9000) to a property and add it to the Spring Environment. As mentioned above, command line properties always take precedence over other property sources.

您可以 运行 您的应用程序是这样的:

$ java -server -Dmyproperty=blabla -jar myapp.jar

并且可以在代码中访问 myproperty 的值。