Biz*_*zzy 5 java scope dependency-injection 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();
});
Run Code Online (Sandbox Code Playgroud)
我确实有一种感觉,当前的解决方案不适用于同时传入的多个请求。因为 VertX 在单线程上运行,所以我必须先完成范围才能进入新的范围,所以这个解决方案现在还不行。
Guice 自定义范围与此相同,因此如果我可以在此自定义范围代码中解决此问题,那就太完美了。我对这些自定义范围不太了解,所以我在这方面有点迷失...
我只想在某处有一些请求存储,而不必将其作为参数传递给整个应用程序代码中的方法。我已经搜索了一些静态访问 RoutingContext 的方法,但现在没有运气。
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |