当前位置: 首页 > 知识库问答 >
问题:

如何让Jersey实例化和管理生命周期并让Guice执行注入

仲孙阳
2023-03-14

我已经参考了这个链接来获取如何操作的指南。https://jersey.java.net/nonav/apidocs/latest/jersey/contribs/jersey-guice/com/sun/jersey/guice/spi/container/servlet/package-summary.html

我遵循了那里显示的内容。
在网络.xml:

<listener>
  <listener-class>com.oocl.ir4.doc.common.servlet.GuiceServletConfig</listener-class>
</listener>
<filter>
  <filter-name>GuiceFilter</filter-name>
  <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>GuiceFilter</filter-name>
  <url-pattern>/rest/*</url-pattern>
</filter-mapping>

我的guice配置:

public class GuiceServletConfig extends GuiceServletContextListener {

  @Override
  protected Injector getInjector() {
    return Guice.createInjector(new JerseyServletModule() {

      @Override
      protected void configureServlets() {

        Map<String, String> params = new HashMap<String, String>();
        params.put(PackagesResourceConfig.PROPERTY_PACKAGES, "xxx.yyy");
        serve("/rest/*").with(GuiceContainer.class, params);
      }
    });
  }
}

下面的资源类实际上已经由泽西岛管理,我不想由Guice管理。它的软件包由泽西岛扫描,但在吉斯配置中解绑:

package xxx.zzz;

@Path("/xxx/zzz")
public class AbcResource extends Resource {

@Inject
  private AbcServiceImpl abcService;

...
}

我希望 Guice 注入资源的类:

package xxx.yyy;

@Singleton
public class AbcServiceImpl {
...
}

但是,它不起作用。空点例外发生时我访问 Abc 服务在 Abc资源中的简单。

谁有任何关于为什么或如何检查由Guice容器维护的内容的提示,以便我可以检查它?

共有1个答案

阮飞翔
2023-03-14

如果你想让吉斯在Abc资源中注入成员,你将需要吉斯来管理这个类。我怀疑你需要添加:

bind(AbcResource.class);

添加到您的配置服务器方法。这不会干扰 Jersey 执行的任何对象管理。

 类似资料:
  • 1. 前言 在之前的小节中我们介绍了 Vue 实例,本小节我们一起来了解一下 Vue 实例的生命周期。包括生命周期的几个阶段,以及各个阶段触发时机和作用。深入理解 Vue 的生命周期是本小的难点,同学们不仅需要知道生命周期的执行顺序,还要理解各生命周期的作用。 2. 慕课解释 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据

  • 问题内容: 我是Spring的新手,我想知道: 我有一个用(spring)注释的java类,并且在内部有一个用注释的方法。然后,该类由另一个类中的带注释字段引用。我可以假定仅在调用后才注入类吗? 问题答案: 如果您问的是在该bean被调用之后发生了给定类的注入,那么答案是肯定的- 在bean被视为“可注入”之前执行 如果您询问是否在所有注入都完成之后(在同一个bean上)在给定bean上执行-是-

  • 该节将带领大家了解Kubernetes中的基本概念,尤其是作为Kubernetes中调度的最基本单位Pod。 本节中包括以下内容: 了解Pod的构成 Pod的生命周期 Pod中容器的启动顺序模板定义 Kubernetes中的基本组件kube-controller-manager就是用来控制Pod的状态和生命周期的,在了解各种controller之前我们有必要先了解下Pod本身和其生命周期。

  • 为了允许隔离执行单个的测试方法,并避免由于可变测试实例状态而产生的意外副作用,JUnit在执行每个测试方法之前创建每个测试类的新实例(请参阅下面的讲解,何为测试方法)。这个"per-method"测试实例生命周期是JUnit Jupiter中的默认行为,类似于JUnit以前的所有版本。 如果您希望JUnit Jupiter在同一个测试实例上执行所有测试方法,只需使用@TestInstance(Li

  • 下图展示了实例的生命周期。你不需要立马弄明白所有的东西,不过随着你的不断学习和使用,它的参考价值会越来越高。

  • 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。 比如created钩子可以用来在一个实例被创建之后执行代码: new Vue({ data: { a: 1 }, created: fu