通过Spring Config将"HardCoded"构造函数Arg Class <T>传递给bean

the*_*hip 6 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>
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*ant 8

尝试:

<bean id="dataMartService" class="com.someClass">
    <constructor-arg>
        <value type="java.lang.Class">someotherclass</value>
    </constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 7

使用弹簧el:

<constructor-arg value="#{ T(java.lang.Math) }" />
Run Code Online (Sandbox Code Playgroud)

(你需要春季3.0)

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