2011-05-24 87 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