Установка свойства компонента 'jobClass' для org.springframework.scheduling.quartz.JobDetailBean - PullRequest
1 голос
/ 24 мая 2011

В моем проекте есть планировщик 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>

Теперь, когда я хочу передать значение свойства в info.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.

Спасибо и всего наилучшего.

1 Ответ

2 голосов
/ 24 мая 2011

У меня такая же проблема. Я закончил с тем, чтобы сделать это частным статическим. сделать так:

private static afrodite;
...