作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在嵌入式 Jersey 中,我可以注册一个 Binder
来放入一些我最终可以使用 @Context
访问的资源
但是,我放入的这些内容更加全局化,而不是在每个请求级别上。我确实知道我可以通过一些属性映射来做到这一点,但我宁愿通过 @Context
和类似 Response foo(@Context HttpServletRequest)
我尝试了 setRequestScopedInitializer()
但它没有按预期将它们放入,并且按照他们的示例使用 Ref
给了我一个空指针异常
有什么办法可以做到这一点吗?
最佳答案
这就是我最终做到的,但我不喜欢我使用命名属性
RoutingContext
是我想要注入(inject)的类型
public class RoutingContextFactory implements
Supplier<RoutingContext> {
@Inject
private ContainerRequest request;
@Override
public RoutingContext get() {
return (RoutingContext) request.getProperty(RoutingContext.class.getName());
}
}
我的 Binder
public class MyBinder extends AbstractBinder {
@Override
protected void configure() {
bindFactory(RoutingContextFactory.class)
.to(RoutingContext.class)
.proxy(true)
.proxyForSameScope(false)
.in(RequestScoped.class);
}
}
初始化
final ResourceConfig resourceConfig = ResourceConfig.forApplicationClass(applicationClass);
resourceConfig.register(new MyBinder());
加载者
final ContainerRequest request = new ContainerRequest(...
request.setProperty(RoutingContext.class.getName(), routingContext);
使用者
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello(
@Context final RoutingContext routingContext) {
return "Hello"
+ routingContext;
}
我仍然希望有一种方法可以让我直接request.register(routingContext)
。我打开https://github.com/jersey/jersey/issues/3682为此。
关于java - 如何将请求级别对象嵌入到@Context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46366643/
我是一名优秀的程序员,十分优秀!