Java @Bean方法中的Http头字段

Java @Bean方法中的Http头字段,java,spring,spring-boot,Java,Spring,Spring Boot,我使用的是spring boot 2.0.5版。我有一个@Bean方法来创建请求范围Bean,但要创建实例,我需要访问为其创建实例的请求的http头字段。@RequestHeader注释在我的@RestController中工作正常,但在我的@Bean方法中工作不正常。有人知道如何在这种情况下访问这些信息吗 下面是我想做的一个示例,但它不起作用,因为@RequestHeader注释在该竞赛中不起作用 谢谢你的提示 向你问好,多米尼克 @Configuration public class APr

我使用的是spring boot 2.0.5版。我有一个
@Bean
方法来创建请求范围Bean,但要创建实例,我需要访问为其创建实例的请求的http头字段。
@RequestHeader
注释在我的
@RestController
中工作正常,但在我的
@Bean
方法中工作不正常。有人知道如何在这种情况下访问这些信息吗

下面是我想做的一个示例,但它不起作用,因为
@RequestHeader
注释在该竞赛中不起作用

谢谢你的提示

向你问好,多米尼克

@Configuration
public class AProducer {

@Bean
@Scope(value="request", proxyMode = ScopedProxyMode.TARGET_CLASS)
public User produceUser( @RequestHeader(value="Accept") String acceptType ) {
    ....
    }

}

@RequestHeader
注释仅在来自文档的处理程序方法上受支持

注释,指示方法参数应绑定到web请求头。 支持Spring MVC和Spring WebFlux中带注释的处理程序方法。

如果方法参数为Map、MultiValueMap或HttpHeaders,则会使用所有头名称和值填充该映射

因此,在
Controller
类中的web请求处理程序方法中获取头值,并通过方法参数将其传递给
produceUser

示例:这是用
@Controller
@RestController
注释的
控制器类中的方法

@RequestMapping("/displayHeaderInfo.do")
public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,
                          @RequestHeader("Keep-Alive") long keepAlive)  {
         //call the `produceUser(String reqParam)` method by autowiring `AProducer` class
}
或者你可以试试
private@Autowired-HttpServletRequestAProducer
类中编码>并按照@JB Nizet的建议获取标题

@Configuration
public class AProducer {

  private @Autowired HttpServletRequest request

 @Bean
 @Scope(value="request", proxyMode = ScopedProxyMode.TARGET_CLASS)
 public User produceUser( @RequestHeader(value="Accept") String acceptType ) {
....      //String value =request.getHeader("Accept")
     }

 }

您可以在bean中自动连接HttpServletRequest,并从中提取头。也许还有另一种方法,但那一种至少应该很好,而且不太难。我不明白,对不起!你能举个小例子吗。。。不需要工作,只是为了得到一个想法?
@Configuration
public class AProducer {

  private @Autowired HttpServletRequest request

 @Bean
 @Scope(value="request", proxyMode = ScopedProxyMode.TARGET_CLASS)
 public User produceUser( @RequestHeader(value="Accept") String acceptType ) {
....      //String value =request.getHeader("Accept")
     }

 }