我正在使用web.xml,它会调用applicationContext.xml ......
在应用程序运行时,属性的值由数据库更改。
我使用嵌入到applicationContext.xml中的cronTriggerSchedule。更改了值${sched1}
,cronTriggerSchedule不知道此更改。
的applicationContext.xml:
<bean name="dailyCountJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="com.honorius.job.CurrencyAddJob"/>
<property name="group" value="DailyJobs"/>
<property name="durability" value="true"/>
<property name="requestsRecovery" value="true"/>
</bean>
<bean id="dailyCountJobCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="dailyCountJob"/>
<property name="group" value="DailyJobsTriggers"/>
<!--<property name="cronExpression" ref="cronExpression"/>-->
<property name="cronExpression" value="${sched1}"/>
</bean>
<bean id="schedProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:ex.properties" />
</bean>
ex.properties:
sched1=0/1 * * * * ?
CurrencyAddJob.java:
FileInputStream in2 = new FileInputStream("C:\\Users\\HonoriusPc\\Desktop\\workspace\\honorius\\src\\main\\resources\\ex.properties");
Properties props2 = new Properties();
props2.load(in2);
in2.close();
FileOutputStream out2 = new FileOutputStream("C:\\Users\\HonoriusPc\\Desktop\\workspace\\honorius\\src\\main\\resources\\ex.properties");
props2.setProperty("sched1", sched); //BOUNDED WITH DATABASE.
props2.store(out2,null);
out2.close();
应用程序停止并重新运行后,新值设置为cronTriggerSchedule。但我希望这些更改同时适用于应用程序。
我如何克服这个问题?
答案 0 :(得分:0)
Spring bean XML只被解析一次。但是您可以通过调用beans setter来更新bean值
jobTrigger.setCronExpression(...);