当前位置: 首页 > 知识库问答 >
问题:

如何强制两个Spring云侦探-Spring MVC/Spring Rest处理控制器处理程序方法参数上设置的@SpanTag注释

乐正镜
2023-03-14

我有一个带有Spring REST和Spring云侦探的Spring Boot应用程序集。我正在尝试根据控制器的方法参数设置一个自定义标签,带有@SpanTag注释,但没有运气

这是一个示例控制器:

@RestController
@RequestMapping("/api/auth")
class ExampleController() {

    @PostMapping("/create")
    fun createToken(
            @SpanTag(key="username",expression = "username") 
            @RequestBody 
            authTokenRequest: Request){
//Some code here
    }
}

有一个拉链在旁边运行,用于检索痕迹和跨度。

当我在/api/auth/create上启动请求时,我可以看到zipkin实例中的Trace弹出。如果我有子跨度,它们也会显示。默认标签在根跨度上也可见(http.pathmvc.controller.class等),但没有名为username的标签。

那么我的问题是,有没有办法强制Spring Cloud Sleuth(在此配置中)确认注释?

共有1个答案

卫松
2023-03-14

在文档中,@SpanTag仅与一种方法结合使用,该方法带有注释的NewSpan或ContinueSpan。(把它明确地写在某个地方是很好的,但隐含地它没有其他意义;)

请尝试:

@ContinueSpan(log = "createToken") //or a log of your choice
@PostMapping("/create")
fun createToken(@SpanTag ...
 类似资料:
  • 我有一个简单的Spring控制器。 当我在查询字符串中传递a=1时,它工作正常。 但是当我通过a=abc时,它给了我这个。 有没有办法让我可以处理这个错误并回复给用户,就像必须是数字一样。 提前感谢。

  • 你们能分享一些关于如何在Spring MVC中设计一个处理异常的良好实现的建议吗?以下是我在网上花了一些时间试图找出处理异常的合适或更好的实现后的一些想法。 以下是我正在进行的项目的一些背景: 使用的MVC框架是Spring Boot Web。与其他使用 Spring MVC 的项目类似,我将代码分为几层:控制器、服务和模型。 在控制器中,主要是验证来自视图(前端)层的表单输入并执行一些业务逻辑。

  • 在我添加了一个Spring Security过滤器后,这就停止工作了。 部署应用程序时,映射按预期配置 提交GET请求。 请求参数是由ExtJS添加的,这不是一个问题,因为它在没有安全性的情况下工作。

  • 我们的假设是poller会将接收到的消息交给task executor进行处理,但是task executor中的消息不会超过64条,而task executor可以容纳256+16条消息。 然而,我们看到异常,队列容量已经达到,任务执行器拒绝任务。我们认为这是因为任务执行器仅由轮询器使用,并在轮询线程上处理获得的请求。由于处理需要很长时间,我们慢慢地用轮询任务淹没任务执行器。并在单个线程中处理它

  • 问题内容: 在学习Spring框架时,我在《 Spring in Action 》一书中注意到,作者并未在控制器中使用方法返回类型。作者将控制器方法声明为的返回类型,并且该方法中的return子句仅返回诸如以下的字符串 有人可以详细说明其工作方式的内部差异吗? 问题答案: 这是深入了解。 Spring提供了一个通常处理所有请求的类。它以其方法做到这一点 最终对象在哪里,是用注释的控制器方法的包装。

  • 我正在中创建。如果我没有错的话,是,也就是说,它们在内部被转换成servlet。 所以,我只是想知道,所有的服务方法(用注释的方法)都转换成单独的servlet了吗?