Как вы используете `@ Selector` в` @ WriteOperation` в конечной точке привода Spring Boot 2.0?

Marco спросил: 27 ноября 2017 в 06:05 в: spring

Я реализую пользовательскую конечную точку со следующим классом:

@Component
@Endpoint(id = "bootstrap")
public class BootstrapUrlEndpoint {  private final URL bootstrapUrl;  @Autowired
  public BootstrapUrlEndpoint(URL bootstrapUrl) {
    this.bootstrapUrl = bootstrapUrl;
  }  @ReadOperation
  public Map<String, String> getBootstrapUrl() {
    Map<String, String> result = new HashMap<>();
    result.put("bootstrap_url", bootstrapUrl.toExternalForm());
    return result;
  }  @WriteOperation
  public void setBootstrapUrl(@Selector String property, String value) throws MalformedURLException {
    System.out.println(String.format(">>> Setting  %s = %s", property, value));
  }
}

Все это "работает как задумано" без @Selector аннотация; пропустите его и отправьте POST в http://localhost:8080/actuator/bootstrap с помощью:

{
  "value": "http://localhost:27017/tables/application"
}

, как и ожидалось, вызовите метод.

Однако Я не могу заставить работать"селектор"; В журналах запуска я вижу, что она зарегистрирована как действительная конечная точка:

Mapped "{[/actuator/bootstrap/{arg0}],methods=[POST],consumes=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public org.reactivestreams....ava.util.Map<java.lang.String, java.lang.String>)

К сожалению, при вызове с POST /actuator/bootstrap/myprop и тем же телом получается 400 Bad Request без журнала ошибок или сообщения об ошибке.

Я искал дополнительную информацию и, возможно, пример: единственный подходящий (но, увы, неполный) пример, который я смог найти, был такой статья - кто-нибудь знает, чего не хватает в моем коде?

Заранее спасибо!


0 ответов