【问题标题】:CDI inject into existing objectCDI 注入现有对象
【发布时间】:2014-07-15 06:09:10
【问题描述】:

假设我有以下课程:

public class MyRequestPayload implements RequestPayload {

    protected MyRequestPayload() {}

    @Override
    public ResponsePayload process() {
        String result = someService.doSomething(foo, bar);
        return new MyResponsePayload(result);
    }

    public final String foo;

    public final Integer bar;

    @Inject
    private SomeService someService;
}

是否有一些我可以调用的 CDI 服务将处理此类实例上的所有 @Inject 注释,注入当前可用的所有匹配服务?这在对象不是单例且不是由 CDI 创建的情况下是必需的。在上面的假设示例中,对象是通过反序列化创建的。

【问题讨论】:

    标签: java jakarta-ee java-ee-6 cdi java-ee-7


    【解决方案1】:

    我认为标准 CDI 不可能。但是如果你使用 DeltaSpike 扩展,你可以使用 BeanProvider.injectFields ... 做你想做的事。请注意,您的 Pojo 当然不是由 CDI 管理(范围)的,只有字段注入被解析...

    【讨论】:

    • 谢谢。我会试一试然后回来。
    • @Jan:DeltaSpike 在该帮助程序中使用标准 CDI-API 调用。
    • 好的,很酷......所以你可以在没有 Deltaspike 的情况下做到这一点......虽然:你为什么不应该使用方便的方式......
    • 我当然会倾向于方便的方式。
    猜你喜欢
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 2012-01-04
    • 2014-01-27
    • 1970-01-01
    相关资源
    最近更新 更多