通过Spring Config将“HardCoded”构造函数Arg Class <t>传递给bean </t>

时间:2012-08-15 14:53:35

标签: java spring dependency-injection

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

我的问题是 - 我可以通过属性注入或指定构造函数arg传入带弹簧的Class实例吗?

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

我认为它看起来像这样:

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

我完全不知道应该如何发生这种情况?

3 个答案:

答案 0 :(得分:7)

尝试:

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

答案 1 :(得分:7)

使用spring el:

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

(你需要春季3.0)

话虽如此,如果你将一个字符串传递给一个在属性集中期望一个类的参数,spring应该自动转换它,虽然我不确定这在匹配构造函数时是如何工作的。上述方法更加简洁。

答案 2 :(得分: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"/>