【问题标题】:Specifying interface as parameter to javax.inject.Provider<IsAnInterface>将接口指定为 javax.inject.Provider<IsAnInterface> 的参数
【发布时间】:2014-08-07 08:39:15
【问题描述】:

我有一个实现接口 IQList 的 GList 类。

我有一个类 Qurious,我需要一个 Provider 来提供 GList 的原型。 (除了将 GList 范围注释为原型)。

但是,我不希望 Qurious 知道 GList 的存在。因此,在 Qurious 中,我有一个声明

Provider<IQList> qlistProvider.

我与 GList 或 applicationContext 有什么关系,以便 Spring 实例化 GList 以满足

Provider<IQList>

?

我试图避免定义工厂。

【问题讨论】:

    标签: java spring code-injection


    【解决方案1】:

    如果我理解正确的话:
    在 Spring 配置中实例化 Provider 类型的 Spring bean
    并将您的 Provider&lt;IQList&gt; qlistProvider. 注释为 @Autowired 就足够了。

    或者您是否希望 Spring 框架猜测您将需要特定类型的对象实例并为您做这件事?我不认为它可以

    【讨论】:

    • 我希望 Spring 会搜索将 bean 注释为组件或 bean 的 IQList 的实现。
    • AFAIR 你必须列出你想要实例化的所有bean,然后Spring会为你注入它们。 (只是一个想法)自动实例化可能有问题,因为它通过匹配名称或类型注入,Provider&lt;IQList&gt; 将不匹配 Provider&lt;IQListImpl&gt;
    猜你喜欢
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多