2011-05-24 84 views
1

我的項目有一個Quartz調度,我設置的JobDetailBean作爲設置bean屬性「jobClass」的org.springframework.scheduling.quartz.JobDetailBean

<bean id="deadlineFailureChecker" class="info.release.scheduler.DeadlineFailureChecker" /> 

<bean id="workingHourPerDayUpdater" class="info.release.scheduler.WorkingHourPerDayUpdater" /> 

<bean name="scheduledJob" class="org.springframework.scheduling.quartz.JobDetailBean"> 
    <property name="jobClass" value="info.release.scheduler.ScheduledJob" /> 
    <property name="jobDataAsMap"> 
     <map> 
      <entry key="deadlineFailureChecker" value-ref="deadlineFailureChecker" /> 
      <entry key="workingHourPerDayUpdater" value-ref="workingHourPerDayUpdater" /> 
     </map> 
    </property>  
</bean> 

現在,因爲我想一個屬性值傳遞給信息.release.scheduler.ScheduledJob我所做的:

<bean id="scheduledJobBean" class="info.release.scheduler.ScheduledJob"> 
    <property name="afrodite" ref="afrodite" /> 
</bean> 

<bean name="scheduledJob" class="org.springframework.scheduling.quartz.JobDetailBean"> 
    <property name="jobClass"> 
     <bean factory-bean="scheduledJobBean" factory-method="getClass"></bean> 
    </property> 
    <property name="jobDataAsMap"> 
     <map> 
      <entry key="deadlineFailureChecker" value-ref="deadlineFailureChecker" /> 
      <entry key="workingHourPerDayUpdater" value-ref="workingHourPerDayUpdater" /> 
     </map> 
    </property>  
</bean> 

但下面System.out.println正在打印null

@Override 
protected void executeInternal(JobExecutionContext context) throws JobExecutionException { 
    System.out.println("============================================="+this.afrodite); 

} 

此方法屬於info.release.scheduler.ScheduledJob extends QuartzJobBean

我也做了一個實驗,我設置

<bean id="scheduledJobBean" class="info.release.scheduler.ScheduledJob"> 
    <property name="afrodite" ref="afrodite" /> 
</bean> 

<bean id="scheduledJobBean" class="info.release.scheduler.ScheduledJob" init-method="init"> 
    <property name="afrodite" ref="afrodite" /> 
</bean> 

public void init() { 
    System.out.println("============================================="+this.afrodite); 
} 

在這種初始化的System.out.println不打印空,而值。

我不明白是怎麼回事! JobDetailBean是否重新實例化jobClass對象?

我需要的是設置一個jobClass屬性JobDetailBean的價值等級的屬性。

感謝和問候。

回答

2

我是同樣的問題。我最終把它變成了私人靜態的。使其如下

private static afrodite; 
+0

非常感謝。那麼ScheduledJob類每次都會重新實例化? – 2011-05-24 10:51:01

+1

我這麼認爲..... :) – 2011-05-24 10:57:02

+0

歡迎您:) – 2011-05-24 11:00:55