为了账号安全,请及时绑定邮箱和手机立即绑定

如何在没有球衣的情况下创建“自定义注射提供程序”(工厂)

如何在没有球衣的情况下创建“自定义注射提供程序”(工厂)

ABOUTYOU 2021-06-15 17:53:25
有没有办法实现这里描述的相同结果而不取决于球衣,而是纯粹的 jax-rs?我想创建一个像 Jersey 这样的自定义注入提供程序,这样我就可以注入 MyClass 从 HttpServletRequest 中提取自定义数据@Injectprotected MyClass myClass;我也发现这个讨论很有用,它的工作原理相同,java.util.function.Supplier但在这段代码中仍然需要 Jersey:bindFactory(MyFactoryOrSupplier.class).to(MyClass.class).in(RequestScoped.class);编辑:CDI 也是一个不错的选择,但纯 jax-rs 更可取
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

我使用 CDI 找到了这个解决方案:


@ApplicationScoped

public class MyFactoryOrSupplier {


    @Produces

    @RequestScoped

    public IMyClass getMyClass(@Context HttpServletRequest request) {

        return (IMyClass) request.getAttribute("MyInjectedClass");

    }

}

然后在我的 servlet 中:


@Inject

protected IMyClass myClass;

bean.xml


bean-discovery-mode="annotated"

实际上,MyClass implements IMyClass因为我不知道MyClass有一个没有参数的公共构造函数,这做到了。


查看完整回答
反对 回复 2021-06-23
  • 1 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信