6

我有一个要注入服务的泛型类型。由于泛型在 Java 中的实现方式,我需要一个构造函数 arg(或属性设置器)来保存泛型类型参数的类信息。

我的问题是——我可以通过属性注入或指定构造函数 arg 传递一个带有 spring 的 Class 实例吗?

我确实知道 T 在运行时之前的类型,所以我具体知道 Type 参数是什么。

我在想它看起来像这样:

<bean id="dataMartService" class="com.someclass">
    <constructor-arg value="java.lang.class<com.someotherclass>" />
</bean>

我完全不知道这应该如何发生吗?

4

3 回答 3

10

尝试:

<bean id="dataMartService" class="com.someClass">
    <constructor-arg>
        <value type="java.lang.Class">someotherclass</value>
    </constructor-arg>
</bean>
于 2012-08-15T14:56:45.700 回答
7

使用弹簧 el:

<constructor-arg value="#{ T(java.lang.Math) }" />

(为此您需要 spring 3.0)

话虽如此,如果您将字符串传递给在属性集期间需要类的参数,spring 应该自动转换它,尽管我不确定在匹配构造函数时这是如何工作的。上述方法要简洁得多。

于 2012-08-15T14:58:31.147 回答
0

您可以使用:

//for constructor
public CheckSpell(SpellCheker spellCheker){
         this.spellCheker=spellCheker;
}

//Use object reference as bean

    <bean id="textEditor" class="com.sring.spellCheck">
          <constructor-arg ref="spellChecker"/>
      </bean>

<bean id="spellCheker" class="com.spring.SpellCheker"/>
于 2014-07-23T05:35:27.560 回答