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

用guice覆盖球衣资源

南门正业
2023-03-14

我正在寻找一种方法来覆盖GuiceServletContextListener中与guice绑定的jersey资源。我的代码,我正在努力工作:

//Define Jersey resource interface
@Path("/books/{key}")
public interface BookDocument {

    public BookDAO getDao();

    public void setDao(BookDAO dao);
}

//Define default implementation
public class BookImpl implements Book {

    @Override
    public BookDAO getDao() {
        return dao;
    }

    @Inject
    @Override
    public void setDao(BookDAO dao) {
        this.dao = dao;
    }
}

//User wants to inject his implementation, so he define it
public class BookUserImpl implements Book {

    @Override
    public BookDAO getDao() {
        return dao;
    }

    @Inject
    @Override
    public void setDao(BookDAO dao) {
        this.dao = dao;
    }
}

//Inject default implementation of resource
public class ApplicationResourcesModule extends AbstractModule
{
    @Override
    protected void configure()
    {
        bind(Book).to(BookImpl);
    }
}

//But user wants to inject his implementation, so he bind it in users AbstractModule
public class ApplicationResourcesModuleUser extends AbstractModule
{
    @Override
    protected void configure()
    {
        bind(Book).to(BookUserImpl);
    }
}

//Bind all resources
public class JerseyGuiceConfig extends GuiceServletContextListener
{
    @Override
    protected Injector getInjector()
    {
        //Override default binding by user bindings.
        return Guice.createInjector(Modules.override(new ApplicationResourcesModule()).with(new ApplicationResourcesModuleUser()), new JerseyServletModule());
    }
}

但不幸的是,这不起作用,虽然我不能像接口一样将jersey资源绑定到实现,但只有bind(BookImpl.class)work。但是这样的绑定是不可能覆盖的。如果我试图用bind(BookUserImpl.class)覆盖bind(BookImpl.class),我会收到一个错误冲突的URI模板。URI模板 /books/{key}用于根资源类。而@Path应该是唯一的。那么我的用例有什么解决方案吗?

暂时还没有答案

 类似资料:
  • 我需要在java上开发简单的web服务。我是java技术新手,根据几篇文章,我决定将JAX-RS(Jersey)与嵌入式http服务器(Grizzly2)结合使用,因为它看起来适合构建REST服务,部署似乎很简单。 在我的开发环境中,所有工作都很完美(使用IntllijIdea)。 但当我尝试在测试服务器上部署时,每个请求都返回“500内部错误”(偶数/application.wadl) 简单资源

  • 如spring boot博客所述 我尝试自定义我的对象序列化。 在我的配置中添加了一个新的配置bean之后 当我尝试输出类用户的实例时,json结果不在CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES中 也许我需要在我的Jersey配置中注册一些东西来激活我的自定义obejctMapper配置 谢谢

  • 我正试图在我的申请中加入炫耀。 我正在遵循这个指南https://github . com/Swagger-API/Swagger-Core/wiki/Swagger-Core-Jersey-2。x-Project-Setup-1.5 #使用-a-custom-application-subclass 但我将Jersey配置为ResourceConfig,如下所示: 这是正确的吗? 没有昂首阔步。

  • 我有几个测试用例,有一个测试用例我想测试通知不可用。我使用了一个单独的将通知服务实例注入(覆盖)为,而不是通常的 它不起作用,因为 依赖于 Play 在此测试的启动生命周期中注入的其他模块。如何加载这些 Play 默认模块,以便 适用于此测试用例?有没有更好的方法可以做到这一点?谢谢

  • 问题内容: 谁能帮我解释为什么Java代码出现问题并一次性打印所有数据,而不是将每个数据块都作为javascript代码优先 Java代码: JavaScript :(打开页面http://jerseyexample- ravikant.rhcloud.com/rest/jws ,然后按F12并在控制台中运行以下内容,不允许其他域进行javascript调用) 编辑:只是为了帮助它也将正常的Jav

  • 我正在尝试通过jQuery POST将一些json数据发送到我本地机器中的jersey REST服务。 在我的服务器端,我有泽西方法来使用这个POST的JSON。 我正在请求中包装json数据。所以在服务器中,我可以在该包装类中获取请求中发送的所有数据。我的请求包装类是 问题pojo类 每当我从jquery发出如下请求时, 我在控制台中发现这个错误: 我可以通过从jQuery发送问题json并在方