+-

我开发了这个@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 - 乐贴网