隨筆-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 閱讀(806) 評論(0)  編輯  收藏 所屬分類: 其他
          主站蜘蛛池模板: 濮阳市| 青岛市| 永安市| 团风县| 饶阳县| 三亚市| 葫芦岛市| 平塘县| 阜城县| 马鞍山市| 凤庆县| 阿勒泰市| 达日县| 拉萨市| 菏泽市| 芦溪县| 临江市| 嵊泗县| 盐池县| 东莞市| 德格县| 屯留县| 阿坝县| 河东区| 青田县| 拉萨市| 武川县| 莱阳市| 青海省| 东港市| 竹溪县| 错那县| 秀山| 临猗县| 泰顺县| 洮南市| 邯郸市| 闻喜县| 南通市| 即墨市| 庆元县|