通过应用程序

时间:2017-07-15 09:22:21

标签: java dependency-injection scope guice vert.x

在过去的几个月里,我一直在努力学习VertX Web框架的细节。 然而,我遇到了一个我认为很容易解决的问题 - 但直到今天我还没有找到解决方案。

所以我的问题是: 我想在整个应用程序中注入一个Web请求作用域上下文。

我尝试做的是这样的:

router.route("...").handler(RoutingContext ctx -> {
    val requestContext = new AppContext(UUID.randomUUID());
    val scope = injector.getInstance(CustomScope.class);
    scope.enter();
    scope.seed(IAppContext.class, requestContext);

    ctx.next();
});

router.route("...").handler(RoutingContext ctx -> {
    // actual code

    ctx.next();
});

router.route("...").handler(RoutingContext ctx -> {
    val scope = injector.getInstance(CustomScope.class);
    scope.exit();

    ctx.response().end();
});

我确实感觉当前的解决方案无法同时处理多个请求。因为VertX在一个线程上运行,所以我必须在输入一个新的范围之前完成范围,所以现在这个解决方案还不行。

Guice自定义范围与this一样,所以如果我可以在这个自定义范围代码中修复它,那将是完美的。我对这些自定义示波器了解不多,所以我在这方面有点迷失......

我只想在某处有一些请求存储,而不必将其作为参数传递给整个应用程序代码的方法。我一直在寻找一些静态访问RoutingContext但现在没有运气的方法。

0 个答案:

没有答案