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

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

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

使用@Value 注解

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

  1. -DargumentName="value1"

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

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

使用@Component Bean

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

  1. @Component
  2. class SampleComponent {
  3. private static final Logger log = LoggerFactory.getLogger(SampleComponent.class);
  4. @Autowired
  5. public SampleComponent(ApplicationArguments args) {
  6. boolean option = args.containsOption("myoption");
  7. if (option) log.info("You have included myoption!");
  8. List<String> _args = args.getNonOptionArgs();
  9. log.info("Extra args ...");
  10. if (!_args.isEmpty()) _args.forEach(file -> log.info(file));
  11. }
  12. }

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

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

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

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

使用 Spring Boot 的 Environment 类

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

  1. java -jar app.jar --myproperty=123

在应用程序调用中:

  1. import org.springframework.core.env.Environment;
  2. @Autowired private Environment env;
  3. String someProperty = env.getProperty("myproperty");

相关文章