Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 如何将RequestHeader与执行器端点一起使用?_Spring Boot_Spring Boot Actuator - Fatal编程技术网

Spring boot 如何将RequestHeader与执行器端点一起使用?

Spring boot 如何将RequestHeader与执行器端点一起使用?,spring-boot,spring-boot-actuator,Spring Boot,Spring Boot Actuator,我已经自定义了我的执行器/信息端点,我想使用标题中的信息来授权对另一个服务的restemplate调用 我在这里实现InfoContributor: 我想接受contribute()方法中的请求头。对于任何用户定义的REST端点,我可以定义一个@RequestHeader参数和访问头 但不幸的是,InfoContributor的contributor()方法只接受一个参数 如何访问contribute()方法中的请求头? 您可以将HttpServletRequest自动连接到您的InfoCon

我已经自定义了我的执行器/信息端点,我想使用标题中的信息来授权对另一个服务的
restemplate
调用

我在这里实现InfoContributor:

我想接受
contribute()
方法中的请求头。对于任何用户定义的REST端点,我可以定义一个
@RequestHeader
参数和访问头

但不幸的是,
InfoContributor
contributor()
方法只接受一个参数

如何访问
contribute()
方法中的请求头?

  • 您可以将
    HttpServletRequest
    自动连接到您的
    InfoContributor
  • 或者您可以使用
    RequestContextHolder
    来获取它

如果我使用您的第一种方法,它不会创建一个请求对象的单例吗?我的应用程序将被多个用户访问。它将是
Custom
类的单例bean。但是spring将注入
请求
是请求范围的代理,因此每个请求都将指向它自己的
HttpServletRequest
。别忘了用
spring boot
标记你的问题,因为很多人会跟着
spring boot
标记,你会得到更快的答案。你原来的问题没有那个标签。这是迈克尔昨天才加的
    import javax.servlet.http.HttpServletRequest;

    @Component
    public class Custom implements InfoContributor {

       @Autowired
       private HttpServletRequest request;

       @Override
       public void contribute(Info.Builder builder) {
          ...
          request.getHeader("your header");
          ...
       }
    }
@Component
public class Custom implements InfoContributor {

    @Override
    public void contribute(Info.Builder builder) {
        ...
        HttpServletRequest request = 
           ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes())
                        .getRequest();
        request.getHeader("your header");
       ...
    }
}