【问题标题】:@Resource injection not happening in JAX-RS@Resource 注入在 JAX-RS 中没有发生
【发布时间】:2019-08-10 10:29:47
【问题描述】:

@ApplicationScoped 没有在 JAX-RS 资源上指定时,下面的行, 没有发生ManagedExecutorService 的@Resource 注入,我遇到了NullPointerException

但是当我添加@ApplicationScoped@Path 时,我可以看到ManagedExecutorService 资源注入已经正常发生。

请帮助弄清楚 JAX-RS 资源之间的区别 仅使用@Path("/uri"),当@Path("/uri")@ApplicationScoped/@RequestScoped一起使用时。

使用的IDE和服务器分别是Netbeans和Glassfish 5。

【问题讨论】:

    标签: jakarta-ee dependency-injection jax-rs cdi


    【解决方案1】:

    资源类实例的生命周期由 CDI 或 JAX-RS 管理。在资源类上添加@ApplicationScoped 后,它将由 CDI 管理。这就是区别。如果它不是 CDI 管理的,则不能注入 CDI @Resource

    【讨论】:

      【解决方案2】:

      只能为容器托管类注入资源。

      【讨论】:

      • 当请求到达 uri .../mes 时,容器会自动创建以下类的实例。默认情况下它不是容器托管类吗? @Path("/mes") 公共类 RestResource { @Resource ManagedExecutorService mes;
      猜你喜欢
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      相关资源
      最近更新 更多