Я реализую пользовательскую конечную точку со следующим классом:
@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
без журнала ошибок или сообщения об ошибке.
Я искал дополнительную информацию и, возможно, пример: единственный подходящий (но, увы, неполный) пример, который я смог найти, был такой статья - кто-нибудь знает, чего не хватает в моем коде?
Заранее спасибо!