I created a very simple actuator endpoint
@Component
@Endpoint(id="custom")
public class CustomActuatorEndpoint {
@ReadOperation
public Map<String, List<String>> invoke3params(String param1, String param2, String param3) {
return new HashMap<>();
}
}
And in my app it works okay with the endpoint
/custom?param1=foo1¶m2=foo2¶m3=foo3
But if I try to invoke it with one param or two params or no params, like this:
/custom?param1=foo1 or /custom I get HTTP 500 and an exception stating that the request is missing required parameters.
I tried to make them optional:
@ReadOperation
public Map<String, List<String>> invoke3params(Optional<String> param1, Optional<String> param2, Optional<String> param3) {
return new HashMap<>();
}
And I have the same result: HTTP 500 missing required parameters exception.
I also tried have different methods like this:
@ReadOperation
public Map<String, List<String>> invoke3params(String param1, String param2, String param3) {
return new HashMap<>();
}
@ReadOperation
public Map<String, List<String>> invoke1params(String param1) {
return new HashMap<>();
}
@ReadOperation
public Map<String, List<String>> invoke0params() {
return new HashMap<>();
}
And I tried overloading methods:
@ReadOperation
public Map<String, List<String>> invoke(String param1, String param2, String param3) {
return new HashMap<>();
}
@ReadOperation
public Map<String, List<String>> invoke(String param1) {
return new HashMap<>();
}
@ReadOperation
public Map<String, List<String>> invoke() {
return new HashMap<>();
}
Then the app fails to start with this exception:
2022-09-14T20:17:28.847Z ERROR --- [main] o.s.b.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pathMappedEndpoints' defined in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/WebEndpointAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.web.PathMappedEndpoints]: Factory method 'pathMappedEndpoints' threw exception; nested exception is java.lang.IllegalStateException: Unable to map duplicate endpoint operations: [web request predicate GET to path 'custom' produces: application/vnd.spring-boot.actuator.v2+json,application/json]
What am I missing? how do I have a query in the custom actuator endpoint? Thank you!