+-
java – 由application.yml使用数组参数的@GetMapping
我开发了这个@GetMapping RestController,一切正常

@GetMapping(path = {"foo", "bar"})
public ResponseEntity<String> foobar() {
    return ResponseEntity.ok("foobar");
}

现在我想使用我的application.yml文件外化路径数组中的值,所以我写了

url:
  - foo
  - bar

我修改了我的代码以便使用它,但它不能以这两种不同的方式工作

@GetMapping(path = "${url}")
public ResponseEntity<String> foobar() {
    return ResponseEntity.ok("foobar");
}

@GetMapping(path = {"${url}"})
public ResponseEntity<String> foobar() {
    return ResponseEntity.ok("foobar");
}

我不明白应用程序属性是否格式不正确或我需要使用SpEL(https://docs.spring.io/spring/docs/3.0.x/reference/expressions.html.

我还希望代码根据application.yml属性是动态的,所以如果url值增加或减少,代码仍然必须工作.

我正在使用Springboot 1.5.13

最佳答案
您无法将YAML列表绑定到数组或列表.有关更多信息,请参阅: @Value and @ConfigurationProperties behave differently when binding to arrays

但是,您可以通过在yml文件中指定正则表达式来实现此目的,如:

url: '{var:foo|bar}'

然后您可以直接在控制器中使用它:

@GetMapping(path = "${url}")
public ResponseEntity<String> foobar() {
    return ResponseEntity.ok("foobar");
}
点击查看更多相关文章

转载注明原文:java – 由application.yml使用数组参数的@GetMapping - 乐贴网