Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Jersey 2.5将参数传递给REST资源_Java_Rest_Embedded Jetty_Jersey 2.0 - Fatal编程技术网

Java 如何使用Jersey 2.5将参数传递给REST资源

Java 如何使用Jersey 2.5将参数传递给REST资源,java,rest,embedded-jetty,jersey-2.0,Java,Rest,Embedded Jetty,Jersey 2.0,我有一个为我的客户机服务的Java服务器(不是应用服务器) 现在我有兴趣添加REST支持。我已经初始化了Jetty服务器,并创建了一些REST资源 我的问题是:如何在创建REST资源时传递参数? 通常我更喜欢每个资源的构造函数,但我不控制它 我知道有一种方法可以注入依赖项。如何使用运动衫2.5 谢谢大家! 我不太明白你说的依赖是什么意思 您应该选中此项:定义您的应用程序 public class MyApplication extends ResourceConfig { public My

我有一个为我的客户机服务的Java服务器(不是应用服务器)

现在我有兴趣添加REST支持。我已经初始化了Jetty服务器,并创建了一些REST资源

我的问题是:如何在创建REST资源时传递参数?

通常我更喜欢每个资源的构造函数,但我不控制它

我知道有一种方法可以注入依赖项。如何使用运动衫2.5


谢谢大家!

我不太明白你说的依赖是什么意思


您应该选中此项:

定义您的应用程序

public class MyApplication extends ResourceConfig {
  public MyApplication() {
    register(new FacadeBinder());
    register(JacksonFeature.class);
    register(MyEndpoint.class);
}
配置注入

public class FacadeBinder extends AbstractBinder {

  @Override
  protected void configure() {
    bind(MyManager.class).to(MyManager.class);
  }
}
在端点中注入已配置的类

@Path("/jersey")
public class MyEndpoint {
  @Inject
  MyManager myManager;
  ...
}

除了使用依赖项注入之外,另一个选项是自己实例化和注册REST端点。Jersey允许您以一种非常类似于依赖注入的方式执行此操作,如Dymtro示例所示。从Dymtro中大量借用,定义您的端点:

@Path("/jersey")
public class MyEndpoint {
    private MyManager myManager;
    public MyEndpoint(MyManager myManager) {
        this.myManager = myManager;
    }
    ....
}
定义您的应用程序:

public class MyApplication extends ResourceConfig {
    public MyApplication(MyManager myManager) {
        register(JacksonFeature.class);
        register(new MyEndpoint(myManager));
        ....
    }
}

我认为使用Spring创建REST服务器要简单得多,看看这个示例,它仍然使用Jersey,但创建整个REST服务所需的代码要少得多。我已经创建了REST服务,但我只需要将参数传递给每个REST资源的构造函数。显示一些代码,这样会更容易帮助我熟悉该指南。但我仍然不清楚如何完成我所需要的。我所需要的是一种将类实例传递到REST资源的方法。我认为您可以使用@BeanParam注释这看起来几乎完美,除了在“FacadeBinder”中传递自定义类的.class,而不是在构造函数中创建实例和传递参数。您应该重新考虑编程实践,避免业务代码中出现新的运算符。考虑使用工厂来自定义实例创建。