2016-03-29 28 views
0

Yay 3.2 ve Kuvars 1.8'i kullanma. aşağıdaki gibi bir org.springframework.scheduling.quartz.JobDetailBean yapılandırılmış ettik:Yay yapılandırması: TypeMismatchException

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

Ben jobClass bir fasulye örneğini ifade ettiğini bu yüzden fasulye bazı özellikleri ayarlayabilirsiniz böylece bu yapılandırmayı değiştirmek istiyorum:

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

Bu yapılandırma ile uygulamasını başlatırken, ben

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

olsun neden? Bunu kabul ediyorum çünkü jobClass özelliği bir sınıf gerektiriyor ve bir örnek değil, o yüzden bunu nasıl ele geçirebilirim?

cevap

0

Bir çözüm bulundu. JobDataAsMap içine bazı özellikleri enjekte edebilirsiniz, bu da onları iş sınıfındaki setter'lara enjekte eder (veya JobCecutionContext.jobDetail öğesinden jobClass öğesinden program aracılığıyla alınabilir).

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