Java @Bean方法中的Http头字段
我使用的是spring boot 2.0.5版。我有一个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
@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-HttpServletRequest在AProducer
类中编码>并按照@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")
}
}