Java 如何使用Jersey 2.5将参数传递给REST资源
我有一个为我的客户机服务的Java服务器(不是应用服务器) 现在我有兴趣添加REST支持。我已经初始化了Jetty服务器,并创建了一些REST资源 我的问题是:如何在创建REST资源时传递参数? 通常我更喜欢每个资源的构造函数,但我不控制它 我知道有一种方法可以注入依赖项。如何使用运动衫2.5Java 如何使用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
谢谢大家! 我不太明白你说的依赖是什么意思
您应该选中此项:定义您的应用程序
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,而不是在构造函数中创建实例和传递参数。您应该重新考虑编程实践,避免业务代码中出现新的运算符。考虑使用工厂来自定义实例创建。