首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Jersey GET响应中使用外部对象

在Jersey GET响应中使用外部对象
EN

Stack Overflow用户
提问于 2018-06-17 19:12:50
回答 1查看 50关注 0票数 0

我正在与Jersey和Jetty开发rest API服务。它非常简单,我有很多这样的端点:

代码语言:javascript
复制
@GET
@Path("/username/{username : [a-zA-Z][a-zA-Z_0-9]}")
@Produces(MediaType.TEXT_PLAIN)
public String getUsername(@Context UriInfo uriInfo, String content) {
    MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
    String nameParam = queryParams.getFirst("name");
    //Dataset<Row> df = GetDataFrame.getDF();
    return "test";
}

在getUserName方法中,我需要使用我在主类中创建的对象。主类目前是这样的:

代码语言:javascript
复制
SourceHandler source = new SparkHandler(inputSource);
    source.loadIntoMemory();

    Server server = new Server(8080);
    ServletContextHandler ctx =
            new ServletContextHandler(ServletContextHandler.NO_SESSIONS);

    ctx.setContextPath("/");
    server.setHandler(ctx);

    ServletHolder serHol = ctx.addServlet(ServletContainer.class, "/rest/*");
    serHol.setInitOrder(1);
    serHol.setInitParameter("jersey.config.server.provider.packages",
            "com.ed7.res");

我想在GET响应中使用源对象。在新泽西有这样做的最佳实践吗?否则,我将创建另一个类,其中包含一个静态字段/静态方法,用于返回该特定对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-18 00:33:11

您可以使用HK2 DI。要对其进行配置,您可以使用Jersey property创建一个独立ServiceLocator,并将该定位器设置为应用程序的父定位器。

代码语言:javascript
复制
public static void main(String... args) {
    SourceHandler source = new SparkHandler(inputSource);

    ServiceLocator locator = ServiceLocatorUtilities.bind(new AbstractBinder() {
        @Override
        protected void configure() {
            bind(source).to(SourceHandler.class);
        }
    });

    ServletHolder serHol = ctx.addServlet(ServletContainer.class, "/rest/*");
    serHol.setInitParameter(ServletProperties.SERVICE_LOCATOR, locator);
}

然后,您就可以在需要的任何地方对SourceHandler执行@Inject操作

代码语言:javascript
复制
@Path("whatever")
public class Resource {

    @Inject
    private SourceHandler sourceHandler;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50896087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档