2016-03-29 5 views
0

Использование Spring 3.2 и Quartz 1.8. Я настроил org.springframework.scheduling.quartz.JobDetailBean следующим образом:Конфигурация пружины: TypeMismatchException

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

Я хотел бы изменить эту конфигурацию, так что jobClass относится к экземпляру компонента, так что я могу установить некоторые свойства на боба:

<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 требуется класс, а не экземпляр, так как мне обойти это?

ответ

0

Найдено решение. Вы можете вводить некоторые свойства в jobDataAsMap, который, в свою очередь, вводит их в сеттеры в ваш jobClass (или может быть запрограммирован из JobExecutionContext.jobDetail в вашем jobClass).

<bean id="a" class="org.springframework.scheduling.quartz.JobDetailBean"> 
    <property name="jobClass" value="com.MyJob" />   
    <property name="jobDataAsMap"> 
     <map> 
      <entry key="propA" value="10" /> 
      <entry key="propB" value="3" />    
      </map> 
    </property>  
</bean> 
Смежные вопросы