在 Spring Boot 应用程序中传递命令行参数

x33g5p2x  于2022-10-05 转载在 Spring  
字(1.1k)|赞(0)|评价(0)|浏览(471)

Spring Boot 具有相当复杂的环境变量和配置属性管理。

使用@Value 注解

一般来说,您可以使用 -DargumentName 传递参数。 例如:

-DargumentName="value1"

然后在您的 Spring Boot 应用程序中,您可以通过执行以下操作来检索该值:

@Value("${argumentName}") private String myVariable

使用@Component Bean

但是您也可以使用更复杂的方式来完成它,使用 @Component Bean,如下例所示:

@Component
class SampleComponent {
  private static final Logger log = LoggerFactory.getLogger(SampleComponent.class);

  @Autowired
  public SampleComponent(ApplicationArguments args) {
    boolean option = args.containsOption("myoption");
    if (option) log.info("You have included myoption!");
    List<String> _args = args.getNonOptionArgs();
    log.info("Extra args ...");
    if (!_args.isEmpty()) _args.forEach(file -> log.info(file));
  }
}

当您执行 args.containsOption(“myoption”) 时,它将期望参数如下:

$ ./mvnw spring-boot:run -Drun.arguments="--myoption"

传递参数的另一种可能方式也是这样:

$ ./mvnw spring-boot:run -Drun.arguments="arg1,arg2"

使用 Spring Boot 的 Environment 类

另一种选择是使用 org.springframework.core.env.Environment 来检索参数。 例子:

java -jar app.jar --myproperty=123

在应用程序调用中:

import org.springframework.core.env.Environment;

@Autowired private Environment env;
String someProperty = env.getProperty("myproperty");

相关文章

微信公众号

最新文章

更多