我有一个通用类型,我注入服务。由于泛型在Java中的实现方式,我需要一个构造函数arg(或属性setter)来保存泛型类型参数的Class信息。
我的问题是 - 我可以通过属性注入或指定构造函数arg传入带弹簧的Class实例吗?
我在运行时知道T的类型,所以我具体知道Type参数是什么。
我认为它看起来像这样:
<bean id="dataMartService" class="com.someclass">
<constructor-arg value="java.lang.class<com.someotherclass>" />
</bean>
我完全不知道应该如何发生这种情况?
答案 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"/>