如何动态修改spring配置文件
我现在有这样一个需求:是要根据页面的配置来备份oracle数据库中的信息,页面上有按天,按周,按月来对数据库进行备份,目前我已在spring中配置文件中实现了数据备份但是...
我现在有这样一个需求:是要根据页面的配置来备份oracle数据库中的信息,页面上有按天,按周,按月来对数据库进行备份,目前我已在spring中配置文件中实现了数据备份但是不能动态来修改这个值:一下是我的spring配置文件:
<beans>
<bean id="test" class="com.mpos.net.Test"></bean>
<bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="test"></property>
<property name="targetMethod" value="print"></property>
</bean>
<bean id="footBallAutoOrderTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="methodInvokingJobDetail"/>
</property>
<property name="cronExpression">
<value>0 * * * * ?</value>
</property>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="footBallAutoOrderTrigger"/>
</list>
</property>
</bean>
</beans>
就这个<value>0 * * * * ?</value>值想动态改变而不用从启服务器没有用struts,请问各位如何实现这个 展开
<beans>
<bean id="test" class="com.mpos.net.Test"></bean>
<bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="test"></property>
<property name="targetMethod" value="print"></property>
</bean>
<bean id="footBallAutoOrderTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="methodInvokingJobDetail"/>
</property>
<property name="cronExpression">
<value>0 * * * * ?</value>
</property>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="footBallAutoOrderTrigger"/>
</list>
</property>
</bean>
</beans>
就这个<value>0 * * * * ?</value>值想动态改变而不用从启服务器没有用struts,请问各位如何实现这个 展开
3个回答
展开全部
这个很好实现啊,把这个表达式存数据库,当然每次启动的时候(服务器启动的时候)读一下配置文件
写个重启的方法:cronExpression这个从外面传进来
// 更新表达式把数据库的字段更新了
appTimeTaskConfigDAO.updateCronExpression(cronExpression);
String[] triggerNames = stdScheduler.getTriggerNames(stdScheduler.DEFAULT_GROUP);
String triggerName = triggerNames[0];
CronTrigger trigger = (CronTrigger) stdScheduler.getTrigger(triggerName, stdScheduler.DEFAULT_GROUP);
//设置trigger新的表达式
trigger.setCronExpression(cronExpression);
//重新启动新的trigger
stdScheduler.rescheduleJob(triggerName, stdScheduler.DEFAULT_GROUP, trigger);
写个重启的方法:cronExpression这个从外面传进来
// 更新表达式把数据库的字段更新了
appTimeTaskConfigDAO.updateCronExpression(cronExpression);
String[] triggerNames = stdScheduler.getTriggerNames(stdScheduler.DEFAULT_GROUP);
String triggerName = triggerNames[0];
CronTrigger trigger = (CronTrigger) stdScheduler.getTrigger(triggerName, stdScheduler.DEFAULT_GROUP);
//设置trigger新的表达式
trigger.setCronExpression(cronExpression);
//重新启动新的trigger
stdScheduler.rescheduleJob(triggerName, stdScheduler.DEFAULT_GROUP, trigger);
展开全部
如果不重启服务器的话,很难该,至少我现在不会。
但是你可以把
<bean id="footBallAutoOrderTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="methodInvokingJobDetail"/>
</property>
<property name="cronExpression">
<value>0 * * * * ?</value>
</property>
</bean>
这一块内容放到java文件中处理,改成手动传入时间。
这样时间就可以随时更改了。
但是你可以把
<bean id="footBallAutoOrderTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="methodInvokingJobDetail"/>
</property>
<property name="cronExpression">
<value>0 * * * * ?</value>
</property>
</bean>
这一块内容放到java文件中处理,改成手动传入时间。
这样时间就可以随时更改了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没听过可以动态的,你想想别的解决方法吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询