3

我正在尝试关注博客文章:

https://spring.io/blog/2017/08/22/introducing-actuator-endpoints-in-spring-boot-2-0#comment-4050095879

我已经实现了这样的执行器端点:

@Component 
@Endpoint(id = "test/filter/configurator")
@RequiredArgsConstructor 
public class AdvisorFilterConfigurator {

private final AdvisorFilterConfig filterConfig;

@ReadOperation 
public Boolean rewrite(@Selector Boolean enable) { 
  filterConfig.setEnable(enable); 
  return filterConfig.isEnable(); 
 } 
}

如果我试图访问http://localhost:9992/admin/test/filter/configurator/true它是缺少参数:启用。请参阅随附的屏幕截图。

遗漏参数

我只能通过这种方式访问​​该端点: http://localhost:9992/admin/test/filter/configurator/ {anystring}?enable=true

我做错了什么还是执行器有问题?

非常感谢,希望尽快收到您的来信

4

1 回答 1

3

“缺少参数”位的发生是因为您没有按照文档中-parameters描述编译代码。

如果没有,您应该在日志中看到类似的内容

2018-08-21 10:35:21.098 INFO 78181 --- [main] sbaewsWebMvcEndpointHandlerMapping:映射“{[/actuator/test/{arg0}],methods=[GET],produces=[application/vnd.spring-boot .actuator.v2+json || application/json]}" 到公共 java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java .util.Map)

一旦你确定代码是用你编译的,-parameters你应该会看到类似这样的东西:

2018-08-21 10:34:20.802 INFO 77977 --- [main] sbaewsWebMvcEndpointHandlerMapping:映射“{[/actuator/test/{enable}],methods=[GET],produces=[application/vnd.spring-boot .actuator.v2+json || application/json]}" 到公共 java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java .util.Map)

请注意,在第一种情况下,选择器是{arg0}(当信息不可用时自动生成的参数名称),而在第二种情况下是{enable}.

如果您使用 Maven 和 Spring Boot 父级 ( ),您还可以从命令行运行该应用程序,mvn clean spring-boot:run因为它会-parameters自动启用。

我还创建了#14159来检查我们如何改进该错误消息。

于 2018-08-21T08:38:15.533 回答