Windows下Spring3.x计划任务实现定时备份MySql数据库

今天在空闲之余查了一下关于MySql数据库备份的方案,最后结合自己的项目情况写了一个关于Spring计划任务的例子,目前我这个版本是在Windwos下测试成功,希望对大家有所帮助,不足之处还请大家多多包含,有什么建议尽管提出,我会第一时间回复大家,谢谢!

1.首先第一步要搭建Spring3.x的环境,这里就不多说,直接上代码:

package cn.gov.csrc.report.action;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

import javax.annotation.Resource;

import org.apache.struts2.convention.annotation.Action;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.context.annotation.Scope;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Controller;

import cn.gov.csrc.report.service.CaseService;

@Controller()
@Scope("prototype")
@Action("TimerAction")
public class TimerAction extends QuartzJobBean {

	private int timeout;
	
	private static int i = 0;

	private CaseService caseService;

	public TimerAction() {
		
	}
	
	/**调度工厂实例化后,经过timeout时间开始执行调度*/
	public void setTimeout(int timeout) {
		this.timeout = timeout;
	}

	@Resource
	public void setCaseService(CaseService caseService) {
		this.caseService = caseService;
	}

	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		System.out.println("定时任务执行中......");
		JobDataMap jobDataMap = context.getTrigger().getJobDataMap();
		System.out.println(jobDataMap+"-------");
	}

	public void start() {
		//备份mysql数据库
		Runtime runtime = Runtime.getRuntime();
		System.out.println("备份数据库任务开始了......");
		String cmd = "mysqldump -h localhost -uroot -proot springdb > e:/springdb.sql";//一定要加-h localhost(或是服务器IP地址)
		try {
			Process process = runtime.exec("cmd /c" + cmd);
			InputStreamReader inputStreamReader = new InputStreamReader(process.getErrorStream());
			LineNumberReader lineNumberReader = new LineNumberReader(inputStreamReader);
			String line;
			while((line = lineNumberReader.readLine()) != null){
				System.out.println(line+"----------------");
			}
			System.out.println("备份成功");
		} catch (IOException e) {
			System.out.println("备份失败");
			e.printStackTrace();
		}
		System.out.println("备份数据库任务结束了......");
	}
	
}

2.配置计划任何的配置文件,这里是使用的是quartz插件实现计划任务:

<!-- 任务计划 -->
    <!-- 要调用的工作 -->
    <bean id="timerAction" class="cn.gov.csrc.report.action.TimerAction"></bean>
    
    <!-- 定义调用对象和调用对象的方法 -->
    <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    	<!-- 调用的类 -->
    	<property name="targetObject">
    		<ref bean="timerAction"/>
    	</property>
    	<!-- 调用类中的方法 -->
    	<property name="targetMethod">
    		<value>start</value>
    	</property>
    	<!-- 作业不并发调度 -->
    	<property name="concurrent" value="false"/>
    </bean>
    
    <!-- 定义触发时间 -->
    <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
    	<property name="jobDetail">
    		<ref bean="jobtask"/>
    	</property>
    	<!-- cron表达式 -->
    	<property name="cronExpression">
    		<!-- 每天晚上11点59分钟59秒执行一次 -->
    		<!-- <value>0 59 23 * * ?</value> -->
    		<!-- 每天上午11点04分钟59秒执行一次-->
    		<value>0 04 11 * * ?</value>
    	</property>
    </bean>
    
    <!-- 总管理类,如果将lazy-init='false'那么容器启动就会执行调度程序 -->
    <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    	<property name="triggers">
    		<list>
    			<ref bean="doTime"/>
    		</list>
    	</property>
    </bean>

3.最后附上quartz的jar包,有需要的朋友可以下载,加到你们的Spring环境中句可以使用了,这个是8.6的:http://pan.baidu.com/s/1dDuvSwp

还有一个quartz时间格式的工具,可以任意改变时间格式:下载地址:http://pan.baidu.com/s/1o6M3PB8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值