【问题标题】:Inject HttpServerRequest in service via Quarkus通过 Quarkus 在服务中注入 HttpServerRequest
【发布时间】:2021-09-15 02:18:37
【问题描述】:

我正在尝试在服务中注入HttpServerRequest,但它始终为空。

@Slf4j
@ApplicationScoped
public class TokenService {
    
    @Context
    HttpServerRequest request;
    
    public SysUser getUser() {
        String authorization = request.getHeader("Authorization");
        log.info(authorization);
        
        // find user by token
        return null;
    }
}
@Inject
TokenService tokenService;

之后,我尝试使用@Context HttpServletRequest request 作为资源中方法参数的一部分。它对我有用。

    @GET
    @Path("routes")
    public Result<Object> routes(@Context HttpServerRequest request) {
        tokenService.getUser(request);
        return null;
    }
    public SysUser getUser(HttpServerRequest request) {
        String authorization = request.getHeader("Authorization");
        log.info(authorization);
        
        // find user by token
        return null;
    }

但我仍然想在服务中注入HttpServerRequest。有人有想法吗?

【问题讨论】:

    标签: java resteasy quarkus


    【解决方案1】:

    HttpServerRequest 和其他注入@Context 的对象只能注入到 JAX-RS 类(即资源和提供者)中。

    这些类无法注入常规 CDI bean,因此您需要在通过注入 JAX-RS 资源(或提供者)获得它们后将它们作为方法参数传递

    【讨论】:

      猜你喜欢
      • 2019-04-17
      • 1970-01-01
      • 2016-11-28
      • 2021-04-17
      • 2022-01-23
      • 2020-01-02
      • 1970-01-01
      • 2019-02-26
      • 2019-04-14
      相关资源
      最近更新 更多