弹簧石英调度

时间:2011-05-20 10:31:10

标签: spring scheduled-tasks quartz-scheduler

在我的应用程序中,需要能够为我的sql数据库自动备份创建预定作业

我可以使用Spring Quartz Scheduling来创建这个Jobs吗?

任何帮助都会有用。

Amulraj.P

1 个答案:

答案 0 :(得分:1)

是的,你可以,虽然看起来有点矫枉过正。可以使用命令行工具来备份MSSQL数据库,如果您在Windows上使用Unix或计划任务,则可以使用cron轻松安排运行。

%PATH_TO_SQL_SERVER%\Tools\Binn\osql.exe
-E -Q "BACKUP DATABASE mydb TO DISK='%PATH_TO_BKP%\db.bak' WITH FORMAT"

对于你的问题,答案是这样的:(来自here的无耻自我复制)

指向业务对象的作业,该业务对象具有负责备份的方法:

<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject" ref="exampleBusinessObject" />
  <property name="targetMethod" value="backupDB" />
  <property name="concurrent" value="false" />
</bean>

负责触发方法的触发器:

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
  <property name="jobDetail" ref="exampleJob" />
  <!-- run every morning at 6 AM, use regular cron expressions-->
  <property name="cronExpression" value="0 0 6 * * ?" />
</bean>

schedulerFactoryBean用于连接触发器:

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
    <list>
      <ref bean="cronTrigger" />
    </list>
  </property>
</bean>

请参阅Spring documentation中的2.5,here获取3.0。