Spring配置:TypeMismatchException

时间:2016-03-29 21:23:29

标签: spring config javabeans

使用Spring 3.2和Quartz 1.8。我已按如下方式配置org.springframework.scheduling.quartz.JobDetailBean

<bean id="a" class="org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass" value="com.MyJob" />        
    ...           
</bean>

我想更改此配置,以便jobClass引用bean实例,以便我可以在bean上设置一些属性:

<bean id="b" class"com.MyJob">
   <constructor-arg name="arg" value="1"/> 
</bean>
<bean id="a" class="org.springframework.scheduling.quartz.JobDetailBean">
   <property name="jobClass" ref="b" />        
    ...           
</bean>

使用此配置启动应用时,我会

org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'com.MyJob' to required type 'java.lang.Class' for property 'jobClass'.

为什么?我认为这是因为jobClass属性需要一个类而不是实例,所以我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

找到解决方案。您可以将一些属性注入jobDataAsMap,然后将它们注入到jobClass中的setter中(或者可以从jobClass中的JobExecutionContext.jobDetail以编程方式检索)。

li