【问题标题】:Using @Inject Instance<blah> in Spring在 Spring 中使用 @Inject Instance<blah>
【发布时间】:2014-05-17 12:39:36
【问题描述】:

我知道 Instance 不是 JSR 330 的一部分,但有 Spring 等价物吗?我对 Instance 实现 Iterable 这一事实感兴趣,因此 Provider 不会是正确的答案。

public interface Report { ... }

(有 2 个类使用 @Named 注释实现 Report)

@Named
public class ReportRunner {
    @Inject private Instance<Report> reports;
}

结果: 没有为依赖找到类型 [javax.enterprise.inject.Instance] 的合格 bean...

【问题讨论】:

  • 你想达到什么目的?
  • AFAIK,你可以简单地使用List&lt;Report&gt;
  • 在 HK2 中,有一个叫做 IterableProvider 的东西来处理这种情况。见hk2.java.net/2.3.0-b03/apidocs/org/glassfish/hk2/api/…。但是由于这个问题是关于 Spring 的,所以这可能不是那么有帮助。有一个 Spring/HK2 桥接器,因此您可以将大部分应用程序保留在 Spring 中,并在这种情况下只使用 Spring/HK2 桥接器,但我不确定。
  • JB Nizet 是正确的。我什至不知道你能做到这一点!谢谢。

标签: spring cdi


【解决方案1】:

结束这个问题,因为它已在 cmets 中得到回答。正如上面提到的@JB Nizet,List&lt;Report&gt; 有效。

对于那些想知道我在做什么的人,它是一个通用的报表运行器,其中每个报表都有自己的实现类,每个类都有一组数据库存储参数。有了这个设置,我可以让报告运行器在我的应用服务器中运行,根据需要放入 jars,在 ReportRunner 维护的子上下文上重新扫描(仅扫描报告包),我可以修改报告飞,无需重新启动服务器。

【讨论】:

    猜你喜欢
    • 2017-11-11
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多