2016-03-29 5 views
0

Verwenden von Spring 3.2 und Quartz 1.8. Ich habe ein org.springframework.scheduling.quartz.JobDetailBean wie folgt konfiguriert:Federkonfiguration: TypeMismatchException

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

Ich möchte diese Konfiguration ändern, so dass die Jobklasse auf eine Bean-Instanz bezieht sich so, dass ich einige Eigenschaften auf der Bohne einstellen:

<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> 

Wenn die App mit dieser Konfiguration starten, ich

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

Warum bekommen ist das? Ich gehe davon aus, dass die Eigenschaft jobClass eine Klasse und keine Instanz benötigt. Wie komme ich also dazu?

Antwort

0

Eine Lösung gefunden. Sie können einige Eigenschaften in die jobDataAsMap einfügen, die sie wiederum in Setter in Ihre jobClass injiziert (oder sie können programmgesteuert von der JobExecutionContext.jobDetail in Ihrer JobClass abgerufen werden).

<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> 
Verwandte Themen