隨筆-112  評論-73  文章-0  trackbacks-0
          有一個自動備份mysql 數據庫的需求,windows 下可以寫一個bat文件,然后加入到計劃任務中設置執行,可是偉大的Windows系統加入計劃任務有時間卻不執行,而且設置計劃任務也挺復雜(寫腳本把執行備份的腳本加入計劃中)。那就用程序寫一個吧備份的功能吧。還是調用備份的腳本,自動任務部分使用Spring3的@Scheduled來實現。
          pom.xml文件中依賴的jar:
           <dependencies>
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-context</artifactId>
                      <version>3.1.4.RELEASE</version>
                  </dependency>

                  <dependency>
                      <groupId>org.quartz-scheduler</groupId>
                      <artifactId>quartz</artifactId>
                      <version>1.8.5</version>
                  </dependency>
          </dependencies>
          spring-config.xml配置如下:
          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
                 xmlns:task
          ="http://www.springframework.org/schema/task"
                 xmlns:context
          ="http://www.springframework.org/schema/context"
                 xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation
          ="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/task
                      http://www.springframework.org/schema/task/spring-task-3.1.xsd http://www.springframework.org/schema/context
                      http://www.springframework.org/schema/context/spring-context-3.1.xsd"
          >
              <context:component-scan base-package="cn.test" />
              <task:annotation-driven/>
          </beans>

          定義一個接口,寫一個實現類。
          package cn.test;

          /**
           * Created by libo on 13-12-18.
           
          */
          public interface SchedulerService {
              void doSome();
          }
          package cn.test;

          import org.springframework.scheduling.annotation.Scheduled;
          import org.springframework.stereotype.Component;

          import java.io.*;
          import java.util.Calendar;

          /**
           * Created by libo on 13-12-18.
           
          */
          @Component
          public class SchedulerServiceImpl implements SchedulerService {

              @Scheduled(cron = "0/5 * *  * * ? ")   //每5秒執行一次
              @Override
              public void doSome() {
                  System.out.println("do soming" + Calendar.getInstance().getTime());
                  Runtime runtime = Runtime.getRuntime();
                  Process p = null;
                  FileWriter fw = null;
                  try {
                      //此處執行的是ipconfig命令,可以換成任何cmd 里的命令。
                      p = runtime.exec("cmd /c ipconfig /all");
                      BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream(), "GBK"));
                      // 將命令執行結果保存到文件中
                      fw = new FileWriter(new File("C:/temp/cmdout.txt"));
                      String line = null;
                      while ((line = reader.readLine()) != null) {
                          fw.write(line + "\n");
                      }
                      fw.flush();
                  } catch (IOException e) {
                      e.printStackTrace();
                  } finally {
                      if (p != null) {
                          p.destroy();
                      }
                      try {
                          if (fw != null)
                              fw.close();
                          if (p != null)
                              p.getOutputStream().close();
                      } catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
                  System.out.println("do soming" + Calendar.getInstance().getTime());
              }

          }

          測試類(注意:使用junit是不能測試自動任務地!)
          package cn.test;

          import org.springframework.context.ApplicationContext;
          import org.springframework.context.support.ClassPathXmlApplicationContext;

          /**
           * Created by libo on 13-12-18.
           
          */
          public class Test {

              public static void main(String[] args){
                  ApplicationContext context = new ClassPathXmlApplicationContext("/spring-config.xml");
                  System.out.println("請等待5秒讓任務飛一會兒!");
              }
          }

          end.
          posted on 2013-12-18 16:35 Libo 閱讀(812) 評論(0)  編輯  收藏 所屬分類: 其他
          主站蜘蛛池模板: 铜梁县| 昂仁县| 磐安县| 随州市| 会同县| 潞西市| 南靖县| 汝城县| 葵青区| 延寿县| 田阳县| 福海县| 无为县| 寻乌县| 民县| 崇州市| 都江堰市| 都兰县| 德格县| 长丰县| 梨树县| 四平市| 五原县| 宽甸| 慈利县| 海城市| 临潭县| 和田市| 陆川县| 土默特右旗| 界首市| 谢通门县| 隆回县| 通渭县| 东港市| 青岛市| 墨玉县| 金秀| 运城市| 德安县| 祁阳县|